Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[4/4] Query for Updates from Nexus, and Fix Miscellaneous Bugs in DataStore #2113

Merged
merged 47 commits into from
Oct 3, 2024
Merged
Show file tree
Hide file tree
Changes from 41 commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
78ace0f
WIP: Documentation for Update Detection
Sewer56 Sep 19, 2024
796c123
Added: Additional Edge Cases to Update Logic Docs
Sewer56 Sep 23, 2024
0cfb392
Added: Extra case of `Archived in the Middle`
Sewer56 Sep 23, 2024
6498415
Fixed: Indentation for `file_updates` field.
Sewer56 Sep 23, 2024
600ec0b
Finalized 'Updating Mods' doc with simplified Implementation requested.
Sewer56 Sep 24, 2024
2155750
Fixed: Minor Notes from older Research Doc
Sewer56 Sep 24, 2024
d151e86
Merge branch 'main' into detect-updates-docs-only
Sewer56 Sep 24, 2024
b54efac
Fixed: Added Missing 'Updating Mods' mkdocs sidebar item.
Sewer56 Sep 24, 2024
71a131b
[Working WIP] Added: Initial Implementation of Generic Page Caching S…
Sewer56 Sep 25, 2024
6fe3105
Merge remote-tracking branch 'origin/main' into updates-cache-system
Sewer56 Sep 26, 2024
7afd32d
Tech Debt Reduction: Add additional V2 GraphQL Types and Correct Size…
Sewer56 Sep 26, 2024
1173046
Added: Missing 'UInt32' types in attribute definitions
Sewer56 Sep 26, 2024
3eb2986
Improved: Accuracy of documentation for FileId struct.
Sewer56 Sep 26, 2024
2de875a
Added: Method for constructing UidForMod and UidForFile from GraphQL …
Sewer56 Sep 26, 2024
a0d80d4
Rename: ICanGetUid to ICanGetUidForMod
Sewer56 Sep 26, 2024
e8e09e3
Added: Tests for UidForModTests and UidForFileTests
Sewer56 Sep 27, 2024
e4349be
Removed: Unused Tests.cs file
Sewer56 Sep 27, 2024
2c96668
Merge branch 'updates-cache-system' into start-adding-v2-types
Sewer56 Sep 27, 2024
dd05a2b
Added: Mixin for V1 API Results to ModUpdates Library
Sewer56 Sep 30, 2024
4a4d8a8
Merge remote-tracking branch 'origin/main' into query-updates-for-items
Sewer56 Sep 30, 2024
fd18359
Added: Mod Page Metadata now is ready for handling update info with V…
Sewer56 Sep 30, 2024
94ae079
Added: Mixin for page metadata.
Sewer56 Sep 30, 2024
dbd6d20
Merge branch 'main' into start-adding-v2-types
Sewer56 Sep 30, 2024
99211ed
Merge branch 'start-adding-v2-types' into query-updates-for-items
Sewer56 Sep 30, 2024
13220bd
NexusModsModPageMetadata: Correctly Use uid as 'primary key'
Sewer56 Sep 30, 2024
85bccf8
Update: Use GameId from uid field of NexusModsModPageMetadata
Sewer56 Sep 30, 2024
3811439
Added: Fetch Mod Page Metadata from the DB
Sewer56 Oct 1, 2024
ada1f8d
Added: Note about field in PageMetadataMixin
Sewer56 Oct 1, 2024
1ebdb01
Use Uid in NexusModsFileMetadata, and Add Relevant Constructors for U…
Sewer56 Oct 1, 2024
8f2e271
Added: Code for running actual update check, and relevant constructs.
Sewer56 Oct 1, 2024
1d4b692
V1: Fix field names on ModUpdate structure to align with Nexus V1 API
Sewer56 Oct 1, 2024
e36c543
Added: Remaining Fixups to make the Update Check 'work'
Sewer56 Oct 1, 2024
2c28878
Added: A note regarding adding more tests.
Sewer56 Oct 1, 2024
4bbc899
Merge remote-tracking branch 'origin/main' into query-updates-for-items
Sewer56 Oct 1, 2024
731a620
Merge branch 'main' into start-adding-v2-types
Sewer56 Oct 1, 2024
edf3775
Merge remote-tracking branch 'origin/main' into start-adding-v2-types
Sewer56 Oct 2, 2024
7a6863b
Merge branch 'start-adding-v2-types' into query-updates-for-items
Sewer56 Oct 2, 2024
8722385
Added: Small note to ModUpdateMixin about choice of field.
Sewer56 Oct 2, 2024
039e8da
Removed: FilesUpdatedAt field, as it is now currently unused.
Sewer56 Oct 2, 2024
3438784
Improve: Clarify last updated date is in UTC
Sewer56 Oct 2, 2024
ca7eb28
Updated Note: It's no longer messy, but we still need to upgrade to V2.
Sewer56 Oct 2, 2024
a68e6dd
Merge branch 'main' into start-adding-v2-types
Sewer56 Oct 2, 2024
7745cdf
Merge branch 'start-adding-v2-types' into query-updates-for-items
Sewer56 Oct 2, 2024
406e290
Improved: Now also updates mod pages.
Sewer56 Oct 3, 2024
66c21c2
Merge interfaces into IModFeedItem
Sewer56 Oct 3, 2024
7c70cbd
Merge branch 'main' into query-updates-for-items
halgari Oct 3, 2024
50042f6
Fix some merge conflicts
halgari Oct 3, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions NexusMods.App.sln
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NexusMods.Abstractions.Medi
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NexusMods.Games.Larian", "src\Games\NexusMods.Games.Larian\NexusMods.Games.Larian.csproj", "{2A35EBB5-1CA6-4F5D-8CE8-352146C82C28}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NexusMods.Networking.ModUpdates", "src\Networking\NexusMods.Networking.ModUpdates\NexusMods.Networking.ModUpdates.csproj", "{8B246C04-F372-47F6-9397-F658915429A8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NexusMods.Networking.ModUpdates.Tests", "tests\Networking\NexusMods.Networking.ModUpdates.Tests\NexusMods.Networking.ModUpdates.Tests.csproj", "{CDA2C52B-A9A7-446B-9D2F-D7B75C1905EF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NexusMods.Games.Larian.Tests", "tests\Games\NexusMods.Games.Larian.Tests\NexusMods.Games.Larian.Tests.csproj", "{425F7A13-99A2-4231-B0C1-C56EB819C174}"
EndProject
Global
Expand Down Expand Up @@ -670,6 +674,14 @@ Global
{2A35EBB5-1CA6-4F5D-8CE8-352146C82C28}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2A35EBB5-1CA6-4F5D-8CE8-352146C82C28}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2A35EBB5-1CA6-4F5D-8CE8-352146C82C28}.Release|Any CPU.Build.0 = Release|Any CPU
{8B246C04-F372-47F6-9397-F658915429A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8B246C04-F372-47F6-9397-F658915429A8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8B246C04-F372-47F6-9397-F658915429A8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8B246C04-F372-47F6-9397-F658915429A8}.Release|Any CPU.Build.0 = Release|Any CPU
{CDA2C52B-A9A7-446B-9D2F-D7B75C1905EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CDA2C52B-A9A7-446B-9D2F-D7B75C1905EF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CDA2C52B-A9A7-446B-9D2F-D7B75C1905EF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CDA2C52B-A9A7-446B-9D2F-D7B75C1905EF}.Release|Any CPU.Build.0 = Release|Any CPU
{425F7A13-99A2-4231-B0C1-C56EB819C174}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{425F7A13-99A2-4231-B0C1-C56EB819C174}.Debug|Any CPU.Build.0 = Debug|Any CPU
{425F7A13-99A2-4231-B0C1-C56EB819C174}.Release|Any CPU.ActiveCfg = Release|Any CPU
Expand Down Expand Up @@ -793,6 +805,8 @@ Global
{8C817874-7A88-450E-B216-851A1B03684C} = {52AF9D62-7D5B-4AD0-BA12-86F2AA67428B}
{5CB6D02C-07D0-4C0D-BF5C-4E2E958A0612} = {0CB73565-1207-4A56-A79F-6A8E9BBD795C}
{2A35EBB5-1CA6-4F5D-8CE8-352146C82C28} = {70D38D24-79AE-4600-8E83-17F3C11BA81F}
{8B246C04-F372-47F6-9397-F658915429A8} = {D7E9D8F5-8AC8-4ADA-B219-C549084AD84C}
{CDA2C52B-A9A7-446B-9D2F-D7B75C1905EF} = {897C4198-884F-448A-B0B0-C2A6D971EAE0}
{425F7A13-99A2-4231-B0C1-C56EB819C174} = {05B06AC1-7F2B-492F-983E-5BC63CDBF20D}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
Expand Down
40 changes: 40 additions & 0 deletions docs/developers/decisions/backend/0019-updating-mods.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Updating Mods

!!! info "This is a design document detailing the steps taken to update mods."

A corresponding research document (original design) can be found on a [separate page][research-doc].

## General Approach

!!! tip "First read the [Problem Statement] in the [Research Document]"

The requested approach (from business) has been to maximize the use of the V2 API,
as opposed to programming against the legacy V1 API.

To achieve this, we will [NOT use the `file_updates` array from V1 API's Querying Mod Files][querying-mod-files];
instead choosing to opt to wait until backend decides their future plans with
respect to 'Mods 2.0' project, and how mod updates will be handled in V2 API in the future.

For now, we will:

- [1. Determine Updated Mod Pages], to update our local cache.
- [2. Multi Query Pages], for update mod pages with a 'cache miss'.

## Displaying Mod Updates

!!! info "We display all files on a given mod page that are more recent (file upload time) than the user's file."

Although uncommon this may include:

- Files for other mods on same mod page.
- Older files (if uploaded out of order).

We will for now rely on *users' common sense* to identify whether a file is an
update to a previous file or not. Until site decides on future plans.

[Problem Statement]: ../../misc/research/00-update-implementation-research.md#problem-statement
[1. Determine Updated Mod Pages]: ../../misc/research/00-update-implementation-research.md#1-determine-updated-mod-pages
[2. Multi Query Pages]: ../../misc/research/00-update-implementation-research.md#multi-query-pages
[querying-mod-files]: ../../misc/research/00-update-implementation-research.md#2-querying-mod-files
[Research Document]: ../../misc/research/00-update-implementation-research.md
[research-doc]: ../../misc/research/00-update-implementation-research.md
Loading
Loading