diff --git a/src/Abstractions/NexusMods.Abstractions.Library.Installers/Extensions.cs b/src/Abstractions/NexusMods.Abstractions.Library.Installers/Extensions.cs
index 89a5e7f88..d1c6fd72f 100644
--- a/src/Abstractions/NexusMods.Abstractions.Library.Installers/Extensions.cs
+++ b/src/Abstractions/NexusMods.Abstractions.Library.Installers/Extensions.cs
@@ -33,7 +33,6 @@ public static LoadoutFile.New ToLoadoutFile(
LoadoutItem = new LoadoutItem.New(tx, id)
{
LoadoutId = loadoutId,
- IsIsDisabledMarker = false,
Name = input.Item.Value.FileName,
ParentId = parent,
},
diff --git a/src/Abstractions/NexusMods.Abstractions.Library.Models/DownloadedFile.cs b/src/Abstractions/NexusMods.Abstractions.Library.Models/DownloadedFile.cs
new file mode 100644
index 000000000..ee8b4cebc
--- /dev/null
+++ b/src/Abstractions/NexusMods.Abstractions.Library.Models/DownloadedFile.cs
@@ -0,0 +1,27 @@
+using JetBrains.Annotations;
+using NexusMods.Abstractions.MnemonicDB.Attributes;
+using NexusMods.MnemonicDB.Abstractions.Models;
+
+namespace NexusMods.Abstractions.Library.Models;
+
+///
+/// Represents a downloaded file in the file.
+///
+[PublicAPI]
+[Include]
+public partial class DownloadedFile : IModelDefinition
+{
+ private const string Namespace = "NexusMods.Library.DownloadedFile";
+
+ ///
+ /// URI to the download page, not the direct download link.
+ ///
+ ///
+ /// Many direct download links aren't permalinks. Those shouldn't be stored.
+ /// Instead, this is the link to the page from which the download was initiated.
+ ///
+ ///
+ /// https://www.nexusmods.com/skyrim/mods/3863
+ ///
+ public static readonly UriAttribute DownloadPageUri = new(Namespace, nameof(DownloadPageUri));
+}
diff --git a/src/Abstractions/NexusMods.Abstractions.Library.Models/LibraryArchive.cs b/src/Abstractions/NexusMods.Abstractions.Library.Models/LibraryArchive.cs
index aaa29ee01..566e806dd 100644
--- a/src/Abstractions/NexusMods.Abstractions.Library.Models/LibraryArchive.cs
+++ b/src/Abstractions/NexusMods.Abstractions.Library.Models/LibraryArchive.cs
@@ -16,7 +16,7 @@ public partial class LibraryArchive : IModelDefinition
///
/// Marker.
///
- public static readonly MarkerAttribute IsLibraryArchiveMarker = new(Namespace, nameof(IsLibraryArchiveMarker));
+ public static readonly MarkerAttribute Archive = new(Namespace, nameof(Archive));
///
/// Back-reference to all files inside the archive.
diff --git a/src/Abstractions/NexusMods.Abstractions.Library.Models/NexusMods.Abstractions.Library.Models.csproj b/src/Abstractions/NexusMods.Abstractions.Library.Models/NexusMods.Abstractions.Library.Models.csproj
index dc631b8d6..1ca3a6f48 100644
--- a/src/Abstractions/NexusMods.Abstractions.Library.Models/NexusMods.Abstractions.Library.Models.csproj
+++ b/src/Abstractions/NexusMods.Abstractions.Library.Models/NexusMods.Abstractions.Library.Models.csproj
@@ -22,5 +22,8 @@
LibraryArchive.cs
+
+ LibraryItem.cs
+
diff --git a/src/Abstractions/NexusMods.Abstractions.Library.Models/Services.cs b/src/Abstractions/NexusMods.Abstractions.Library.Models/Services.cs
index c0e2a7e83..6a063beca 100644
--- a/src/Abstractions/NexusMods.Abstractions.Library.Models/Services.cs
+++ b/src/Abstractions/NexusMods.Abstractions.Library.Models/Services.cs
@@ -17,6 +17,7 @@ public static IServiceCollection AddLibraryModels(this IServiceCollection servic
return serviceCollection
.AddLibraryItemModel()
.AddLibraryFileModel()
+ .AddDownloadedFileModel()
.AddLocalFileModel()
.AddLibraryArchiveModel()
.AddLibraryArchiveFileEntryModel();
diff --git a/src/Abstractions/NexusMods.Abstractions.Loadouts.Synchronizers/ALoadoutSynchronizer.cs b/src/Abstractions/NexusMods.Abstractions.Loadouts.Synchronizers/ALoadoutSynchronizer.cs
index 6980a8aed..99aecfea9 100644
--- a/src/Abstractions/NexusMods.Abstractions.Loadouts.Synchronizers/ALoadoutSynchronizer.cs
+++ b/src/Abstractions/NexusMods.Abstractions.Loadouts.Synchronizers/ALoadoutSynchronizer.cs
@@ -136,7 +136,7 @@ protected LoadoutOverridesGroupId GetOrCreateOverridesGroup(ITransaction tx, Loa
OverridesForId = loadout,
LoadoutItemGroup = new LoadoutItemGroup.New(tx, id)
{
- IsIsLoadoutItemGroupMarker = true,
+ IsGroup = true,
LoadoutItem = new LoadoutItem.New(tx, id)
{
Name = "Overrides",
@@ -225,7 +225,7 @@ public SyncTree BuildSyncTree(DiskStateTree currentState, DiskStateTree previous
///
private static bool FileIsEnabled(LoadoutItem.ReadOnly arg)
{
- return !arg.GetThisAndParents().Any(f => f.Contains(LoadoutItem.IsDisabledMarker));
+ return !arg.GetThisAndParents().Any(f => f.Contains(LoadoutItem.Disabled));
}
///
@@ -381,7 +381,7 @@ private void WarnOfUnableToExtract(SyncActionGroupings groupings)
{
var delete = new DeletedFile.New(tx, out var id)
{
- IsIsDeletedFileMarker = true,
+ Reason = "Reified delete",
LoadoutItemWithTargetPath = new LoadoutItemWithTargetPath.New(tx, id)
{
TargetPath = item.Path,
@@ -800,7 +800,7 @@ private LoadoutGameFilesGroup.New CreateLoadoutGameFilesGroup(LoadoutId loadout,
GameMetadataId = installation.GameMetadataId,
LoadoutItemGroup = new LoadoutItemGroup.New(tx, id)
{
- IsIsLoadoutItemGroupMarker = true,
+ IsGroup = true,
LoadoutItem = new LoadoutItem.New(tx, id)
{
Name = "Game Files",
diff --git a/src/Abstractions/NexusMods.Abstractions.Loadouts/DeletedFile.cs b/src/Abstractions/NexusMods.Abstractions.Loadouts/DeletedFile.cs
index 992558bb7..b9894fccf 100644
--- a/src/Abstractions/NexusMods.Abstractions.Loadouts/DeletedFile.cs
+++ b/src/Abstractions/NexusMods.Abstractions.Loadouts/DeletedFile.cs
@@ -14,7 +14,7 @@ public partial class DeletedFile : IModelDefinition
private const string Namespace = "NexusMods.Loadouts.DeletedFile";
///
- /// Marker.
+ /// Reason.
///
- public static readonly MarkerAttribute IsDeletedFileMarker = new(Namespace, nameof(IsDeletedFileMarker));
+ public static readonly StringAttribute Reason = new(Namespace, nameof(Reason));
}
diff --git a/src/Abstractions/NexusMods.Abstractions.Loadouts/Extensions/LoadoutExtensions.cs b/src/Abstractions/NexusMods.Abstractions.Loadouts/Extensions/LoadoutExtensions.cs
index 80aade46b..738f96440 100644
--- a/src/Abstractions/NexusMods.Abstractions.Loadouts/Extensions/LoadoutExtensions.cs
+++ b/src/Abstractions/NexusMods.Abstractions.Loadouts/Extensions/LoadoutExtensions.cs
@@ -14,11 +14,9 @@ public static class LoadoutExtensions
{
public static IEnumerable GetEnabledGroups(this Loadout.ReadOnly loadout)
{
- return loadout.Items.OfTypeLoadoutItemGroup().Where(group => !group.AsLoadoutItem().IsIsDisabledMarker);
+ return loadout.Items.OfTypeLoadoutItemGroup().Where(group => !group.AsLoadoutItem().IsDisabled);
}
-
-
private static IEnumerable GetEnabledMods(this Loadout.ReadOnly loadout, bool onlyEnabledMods)
{
var enumerable = onlyEnabledMods
diff --git a/src/Abstractions/NexusMods.Abstractions.Loadouts/Extensions/LoadoutItemExtensions.cs b/src/Abstractions/NexusMods.Abstractions.Loadouts/Extensions/LoadoutItemExtensions.cs
index fb19bd840..85685eda7 100644
--- a/src/Abstractions/NexusMods.Abstractions.Loadouts/Extensions/LoadoutItemExtensions.cs
+++ b/src/Abstractions/NexusMods.Abstractions.Loadouts/Extensions/LoadoutItemExtensions.cs
@@ -45,6 +45,6 @@ public static class LoadoutItemExtensions
///
public static bool IsEnabled(this LoadoutItem.ReadOnly item)
{
- return !item.GetThisAndParents().Any(i => i.IsIsDisabledMarker);
+ return !item.GetThisAndParents().Any(i => i.IsDisabled);
}
}
diff --git a/src/Abstractions/NexusMods.Abstractions.Loadouts/LoadoutItem.cs b/src/Abstractions/NexusMods.Abstractions.Loadouts/LoadoutItem.cs
index 72d5bbfea..4fe69b3ec 100644
--- a/src/Abstractions/NexusMods.Abstractions.Loadouts/LoadoutItem.cs
+++ b/src/Abstractions/NexusMods.Abstractions.Loadouts/LoadoutItem.cs
@@ -26,7 +26,7 @@ public partial class LoadoutItem : IModelDefinition
///
/// The exact meaning of a "disabled" loadout item is up to the implementations.
///
- public static readonly MarkerAttribute IsDisabledMarker = new(Namespace, nameof(IsDisabledMarker));
+ public static readonly MarkerAttribute Disabled = new(Namespace, nameof(Disabled));
///
/// Loadout that contains the item.
diff --git a/src/Abstractions/NexusMods.Abstractions.Loadouts/LoadoutItemGroup.cs b/src/Abstractions/NexusMods.Abstractions.Loadouts/LoadoutItemGroup.cs
index 2d3e24f7f..49539fea1 100644
--- a/src/Abstractions/NexusMods.Abstractions.Loadouts/LoadoutItemGroup.cs
+++ b/src/Abstractions/NexusMods.Abstractions.Loadouts/LoadoutItemGroup.cs
@@ -16,7 +16,7 @@ public partial class LoadoutItemGroup : IModelDefinition
///
/// Marker.
///
- public static readonly MarkerAttribute IsLoadoutItemGroupMarker = new(Namespace, nameof(IsLoadoutItemGroupMarker));
+ public static readonly MarkerAttribute Group = new(Namespace, nameof(Group));
///
/// Children of the group.
diff --git a/src/Abstractions/NexusMods.Abstractions.NexusModsLibrary/NexusModsLibraryFile.cs b/src/Abstractions/NexusMods.Abstractions.NexusModsLibrary/NexusModsLibraryFile.cs
index cd50405b3..b34fdb0a1 100644
--- a/src/Abstractions/NexusMods.Abstractions.NexusModsLibrary/NexusModsLibraryFile.cs
+++ b/src/Abstractions/NexusMods.Abstractions.NexusModsLibrary/NexusModsLibraryFile.cs
@@ -6,10 +6,10 @@
namespace NexusMods.Abstractions.NexusModsLibrary;
///
-/// Represented a originating from Nexus Mods.
+/// Represented a originating from Nexus Mods.
///
[PublicAPI]
-[Include]
+[Include]
public partial class NexusModsLibraryFile : IModelDefinition
{
private const string Namespace = "NexusMods.Library.NexusModsLibraryFile";
diff --git a/src/Games/NexusMods.Games.RedEngine/ModInstallers/RedModInstaller.cs b/src/Games/NexusMods.Games.RedEngine/ModInstallers/RedModInstaller.cs
index 4b612f96d..82b2b5e4d 100644
--- a/src/Games/NexusMods.Games.RedEngine/ModInstallers/RedModInstaller.cs
+++ b/src/Games/NexusMods.Games.RedEngine/ModInstallers/RedModInstaller.cs
@@ -119,7 +119,6 @@ public override async ValueTask ExecuteAsync(
var loadoutItem = new LoadoutItem.New(tx)
{
LoadoutId = loadout.Id,
- IsIsDisabledMarker = false,
Name = infoJson.Name,
ParentId = loadoutGroup.Id,
};
@@ -127,7 +126,7 @@ public override async ValueTask ExecuteAsync(
var groupItem = new LoadoutItemGroup.New(tx, loadoutItem.Id)
{
LoadoutItem = loadoutItem,
- IsIsLoadoutItemGroupMarker = true,
+ IsGroup = true,
};
diff --git a/src/Games/NexusMods.Games.RedEngine/ModInstallers/SimpleOverlayModInstaller.cs b/src/Games/NexusMods.Games.RedEngine/ModInstallers/SimpleOverlayModInstaller.cs
index 3e36ccb47..bb8cba988 100644
--- a/src/Games/NexusMods.Games.RedEngine/ModInstallers/SimpleOverlayModInstaller.cs
+++ b/src/Games/NexusMods.Games.RedEngine/ModInstallers/SimpleOverlayModInstaller.cs
@@ -121,7 +121,6 @@ public override ValueTask ExecuteAsync(
Name = relativePath.Name,
LoadoutId = loadout.Id,
ParentId = loadoutGroup.Id,
- IsIsDisabledMarker = false,
},
},
Hash = file.Item.LibraryFile.Value.Hash,
diff --git a/src/Games/NexusMods.Games.StardewValley/Emitters/DependencyDiagnosticEmitter.cs b/src/Games/NexusMods.Games.StardewValley/Emitters/DependencyDiagnosticEmitter.cs
index 74b220ddf..b494cf887 100644
--- a/src/Games/NexusMods.Games.StardewValley/Emitters/DependencyDiagnosticEmitter.cs
+++ b/src/Games/NexusMods.Games.StardewValley/Emitters/DependencyDiagnosticEmitter.cs
@@ -77,7 +77,7 @@ private static IEnumerable DiagnoseDisabledDependencies(
.Where(kv =>
{
var (loadoutItemId, _) = kv;
- return !SMAPIModLoadoutItem.Load(loadout.Db, loadoutItemId).AsLoadoutItemGroup().AsLoadoutItem().IsIsDisabledMarker;
+ return !SMAPIModLoadoutItem.Load(loadout.Db, loadoutItemId).AsLoadoutItemGroup().AsLoadoutItem().IsDisabled;
})
.Select(kv =>
{
@@ -87,7 +87,7 @@ private static IEnumerable DiagnoseDisabledDependencies(
var disabledDependencies = requiredDependencies
.Select(uniqueIdToLoadoutItemId.GetValueOrDefault)
.Where(id => id != default(SMAPIModLoadoutItemId))
- .Where(id => !SMAPIModLoadoutItem.Load(loadout.Db, id).AsLoadoutItemGroup().AsLoadoutItem().IsIsDisabledMarker)
+ .Where(id => !SMAPIModLoadoutItem.Load(loadout.Db, id).AsLoadoutItemGroup().AsLoadoutItem().IsDisabled)
.ToArray();
return (Id: loadoutItemId, DisabledDependencies: disabledDependencies);
@@ -118,7 +118,7 @@ private async Task> DiagnoseMissingDependencies(
.Where(kv =>
{
var (loadoutItemId, _) = kv;
- return !SMAPIModLoadoutItem.Load(loadout.Db, loadoutItemId).AsLoadoutItemGroup().AsLoadoutItem().IsIsDisabledMarker;
+ return !SMAPIModLoadoutItem.Load(loadout.Db, loadoutItemId).AsLoadoutItemGroup().AsLoadoutItem().IsDisabled;
})
.Select(kv =>
{
diff --git a/src/Games/NexusMods.Games.StardewValley/Emitters/Helpers.cs b/src/Games/NexusMods.Games.StardewValley/Emitters/Helpers.cs
index 4c6c8e640..318347949 100644
--- a/src/Games/NexusMods.Games.StardewValley/Emitters/Helpers.cs
+++ b/src/Games/NexusMods.Games.StardewValley/Emitters/Helpers.cs
@@ -21,7 +21,7 @@ public static bool TryGetSMAPI(Loadout.ReadOnly loadout, out SMAPILoadoutItem.Re
var foundSMAPI = loadout.Items
.OfTypeLoadoutItemGroup()
.OfTypeSMAPILoadoutItem()
- .TryGetFirst(x => !x.AsLoadoutItemGroup().AsLoadoutItem().IsIsDisabledMarker, out smapi);
+ .TryGetFirst(x => !x.AsLoadoutItemGroup().AsLoadoutItem().IsDisabled, out smapi);
return foundSMAPI;
}
@@ -36,7 +36,7 @@ public static bool TryGetSMAPI(Loadout.ReadOnly loadout, out SMAPILoadoutItem.Re
var asyncEnumerable = loadout.Items
.OfTypeLoadoutItemGroup()
.OfTypeSMAPIModLoadoutItem()
- .Where(x => !onlyEnabledMods || !x.AsLoadoutItemGroup().AsLoadoutItem().IsIsDisabledMarker)
+ .Where(x => !onlyEnabledMods || !x.AsLoadoutItemGroup().AsLoadoutItem().IsDisabled)
.ToAsyncEnumerable()
.ConfigureAwait(continueOnCapturedContext: false)
.WithCancellation(cancellationToken);
diff --git a/src/Games/NexusMods.Games.StardewValley/Emitters/MissingSMAPIEmitter.cs b/src/Games/NexusMods.Games.StardewValley/Emitters/MissingSMAPIEmitter.cs
index 3a28f6c9a..02500db14 100644
--- a/src/Games/NexusMods.Games.StardewValley/Emitters/MissingSMAPIEmitter.cs
+++ b/src/Games/NexusMods.Games.StardewValley/Emitters/MissingSMAPIEmitter.cs
@@ -33,7 +33,7 @@ public async IAsyncEnumerable Diagnose(
yield break;
}
- var isSMAPIEnabled = smapiLoadoutItems.Any(x => !x.AsLoadoutItemGroup().AsLoadoutItem().IsIsDisabledMarker);
+ var isSMAPIEnabled = smapiLoadoutItems.Any(x => !x.AsLoadoutItemGroup().AsLoadoutItem().IsDisabled);
if (isSMAPIEnabled) yield break;
yield return Diagnostics.CreateSMAPIRequiredButDisabled(
diff --git a/src/Games/NexusMods.Games.StardewValley/Installers/SMAPIInstaller.cs b/src/Games/NexusMods.Games.StardewValley/Installers/SMAPIInstaller.cs
index a2c6dacc7..79ba9f362 100644
--- a/src/Games/NexusMods.Games.StardewValley/Installers/SMAPIInstaller.cs
+++ b/src/Games/NexusMods.Games.StardewValley/Installers/SMAPIInstaller.cs
@@ -349,7 +349,7 @@ public override async ValueTask ExecuteAsync(
{
_ = new SMAPIModDatabaseLoadoutFile.New(transaction, entityId)
{
- IsIsModDatabaseFileMarker = true,
+ IsModDatabaseFile = true,
LoadoutFile = loadoutFile,
};
diff --git a/src/Games/NexusMods.Games.StardewValley/Installers/SMAPIModInstaller.cs b/src/Games/NexusMods.Games.StardewValley/Installers/SMAPIModInstaller.cs
index 6d2b7a44f..e9d28311a 100644
--- a/src/Games/NexusMods.Games.StardewValley/Installers/SMAPIModInstaller.cs
+++ b/src/Games/NexusMods.Games.StardewValley/Installers/SMAPIModInstaller.cs
@@ -118,7 +118,7 @@ public override async ValueTask ExecuteAsync(
var smapiModGroup = new LoadoutItemGroup.New(transaction, out var smapiModEntityId)
{
- IsIsLoadoutItemGroupMarker = true,
+ IsGroup = true,
LoadoutItem = new LoadoutItem.New(transaction, smapiModEntityId)
{
Name = manifest.Name,
@@ -153,7 +153,7 @@ public override async ValueTask ExecuteAsync(
manifestLoadoutItemId = entityId;
_ = new SMAPIManifestLoadoutFile.New(transaction, entityId)
{
- IsIsManifestMarker = true,
+ IsManifestFile = true,
LoadoutFile = loadoutFile,
};
}
diff --git a/src/Games/NexusMods.Games.StardewValley/Models/SMAPIManifestLoadoutFile.cs b/src/Games/NexusMods.Games.StardewValley/Models/SMAPIManifestLoadoutFile.cs
index 12324088e..4b32fa307 100644
--- a/src/Games/NexusMods.Games.StardewValley/Models/SMAPIManifestLoadoutFile.cs
+++ b/src/Games/NexusMods.Games.StardewValley/Models/SMAPIManifestLoadoutFile.cs
@@ -9,5 +9,5 @@ public partial class SMAPIManifestLoadoutFile : IModelDefinition
{
private const string Namespace = "NexusMods.StardewValley.SMAPIManifestLoadoutFile";
- public static readonly MarkerAttribute IsManifestMarker = new(Namespace, nameof(IsManifestMarker));
+ public static readonly MarkerAttribute ManifestFile = new(Namespace, nameof(ManifestFile));
}
diff --git a/src/Games/NexusMods.Games.StardewValley/Models/SMAPIModDatabaseLoadoutFile.cs b/src/Games/NexusMods.Games.StardewValley/Models/SMAPIModDatabaseLoadoutFile.cs
index 145495f79..b7f3fc672 100644
--- a/src/Games/NexusMods.Games.StardewValley/Models/SMAPIModDatabaseLoadoutFile.cs
+++ b/src/Games/NexusMods.Games.StardewValley/Models/SMAPIModDatabaseLoadoutFile.cs
@@ -9,5 +9,5 @@ public partial class SMAPIModDatabaseLoadoutFile : IModelDefinition
{
private const string Namespace = "NexusMods.StardewValley.SMAPIModDatabaseLoadoutFile";
- public static readonly MarkerAttribute IsModDatabaseFileMarker = new(Namespace, nameof(IsModDatabaseFileMarker));
+ public static readonly MarkerAttribute ModDatabaseFile = new(Namespace, nameof(ModDatabaseFile));
}
diff --git a/src/Games/NexusMods.Games.StardewValley/StardewValleyLoadoutSynchronizer.cs b/src/Games/NexusMods.Games.StardewValley/StardewValleyLoadoutSynchronizer.cs
index d09ca032c..aa7361dcb 100644
--- a/src/Games/NexusMods.Games.StardewValley/StardewValleyLoadoutSynchronizer.cs
+++ b/src/Games/NexusMods.Games.StardewValley/StardewValleyLoadoutSynchronizer.cs
@@ -79,7 +79,7 @@ private static bool TryGetSMAPIMod(RelativePath modDirectoryName, Loadout.ReadOn
var manifestFilePath = new GamePath(LocationId.Game, Constants.ModsFolder.Join(modDirectoryName).Join(Constants.ManifestFile));
if (!LoadoutItemWithTargetPath.FindByTargetPath(db, manifestFilePath)
- .TryGetFirst(x => x.AsLoadoutItem().LoadoutId == loadout && x.Contains(SMAPIManifestLoadoutFile.IsManifestMarker), out var file))
+ .TryGetFirst(x => x.AsLoadoutItem().LoadoutId == loadout && x.Contains(SMAPIManifestLoadoutFile.ManifestFile), out var file))
{
mod = default(SMAPIModLoadoutItem.ReadOnly);
return false;
diff --git a/src/Networking/NexusMods.Networking.Downloaders/Tasks/State/DownloaderState.cs b/src/Networking/NexusMods.Networking.Downloaders/Tasks/State/DownloaderState.cs
index 16f1dc8fa..a6cb20168 100644
--- a/src/Networking/NexusMods.Networking.Downloaders/Tasks/State/DownloaderState.cs
+++ b/src/Networking/NexusMods.Networking.Downloaders/Tasks/State/DownloaderState.cs
@@ -18,6 +18,7 @@ namespace NexusMods.Networking.Downloaders.Tasks.State;
/// might not need it since it uses another strategy to start a mod download.
///
// ReSharper disable once PartialTypeWithSinglePart
+[Obsolete("To be replaced by jobs")]
public partial class DownloaderState : IModelDefinition
{
private const string Namespace = "NexusMods.Networking.Downloaders.Tasks.DownloaderState";
diff --git a/src/Networking/NexusMods.Networking.Downloaders/Tasks/State/HttpDownloadState.cs b/src/Networking/NexusMods.Networking.Downloaders/Tasks/State/HttpDownloadState.cs
index 70fb5e653..96d894913 100644
--- a/src/Networking/NexusMods.Networking.Downloaders/Tasks/State/HttpDownloadState.cs
+++ b/src/Networking/NexusMods.Networking.Downloaders/Tasks/State/HttpDownloadState.cs
@@ -8,6 +8,7 @@ namespace NexusMods.Networking.Downloaders.Tasks.State;
///
// ReSharper disable once PartialTypeWithSinglePart
[Include]
+[Obsolete("To be replaced by jobs")]
public partial class HttpDownloadState : IModelDefinition
{
private const string Namespace = "NexusMods.Networking.Downloaders.Tasks.State.HttpDownloadState";
diff --git a/src/Networking/NexusMods.Networking.Downloaders/Tasks/State/NxmDownloadState.cs b/src/Networking/NexusMods.Networking.Downloaders/Tasks/State/NxmDownloadState.cs
index 8f174d4e0..484688802 100644
--- a/src/Networking/NexusMods.Networking.Downloaders/Tasks/State/NxmDownloadState.cs
+++ b/src/Networking/NexusMods.Networking.Downloaders/Tasks/State/NxmDownloadState.cs
@@ -5,6 +5,7 @@
namespace NexusMods.Networking.Downloaders.Tasks.State;
+[Obsolete("To be replaced by jobs")]
[Include]
public partial class NxmDownloadState : IModelDefinition
{
diff --git a/src/NexusMods.App.UI/Filters/LibraryUserFilters.cs b/src/NexusMods.App.UI/Filters/LibraryUserFilters.cs
index 8717da926..088854d36 100644
--- a/src/NexusMods.App.UI/Filters/LibraryUserFilters.cs
+++ b/src/NexusMods.App.UI/Filters/LibraryUserFilters.cs
@@ -20,8 +20,7 @@ public static bool ShouldShow(LibraryItem.ReadOnly libraryItem)
if (!libraryItem.TryGetAsLibraryFile(out var file))
return false;
- // TODO: also show downloads
- return file.IsLocalFile();
+ return file.IsLocalFile() || file.IsDownloadedFile();
}
///
diff --git a/src/NexusMods.App.UI/Pages/LoadoutGrid/Columns/ModEnabled/ModEnabledViewModel.cs b/src/NexusMods.App.UI/Pages/LoadoutGrid/Columns/ModEnabled/ModEnabledViewModel.cs
index 4c1e3bc42..7ac26823e 100644
--- a/src/NexusMods.App.UI/Pages/LoadoutGrid/Columns/ModEnabled/ModEnabledViewModel.cs
+++ b/src/NexusMods.App.UI/Pages/LoadoutGrid/Columns/ModEnabled/ModEnabledViewModel.cs
@@ -30,7 +30,7 @@ public ModEnabledViewModel(IConnection conn)
this.WhenAnyValue(vm => vm.Row)
.Select(groupId => LoadoutItemGroup.Observe(_connection, groupId))
.Switch()
- .Select(group => !group.AsLoadoutItem().IsIsDisabledMarker)
+ .Select(group => !group.AsLoadoutItem().IsDisabled)
.BindToVM(this, vm => vm.Enabled)
.DisposeWith(d);
});
@@ -42,13 +42,13 @@ public ModEnabledViewModel(IConnection conn)
tx.Add(Row.Value, static (txInner, db, id) =>
{
var item = LoadoutItem.Load(db, id);
- if (item.IsIsDisabledMarker)
+ if (item.IsDisabled)
{
- txInner.Retract(item.Id, LoadoutItem.IsDisabledMarker, Null.Instance);
+ txInner.Retract(item.Id, LoadoutItem.Disabled, Null.Instance);
}
else
{
- txInner.Add(item.Id, LoadoutItem.IsDisabledMarker, Null.Instance);
+ txInner.Add(item.Id, LoadoutItem.Disabled, Null.Instance);
}
});
@@ -62,6 +62,6 @@ public int Compare(LoadoutItemGroupId a, LoadoutItemGroupId b)
var db = _connection.Db;
var aEnt = LoadoutItemGroup.Load(db, a);
var bEnt = LoadoutItemGroup.Load(db, b);
- return aEnt.AsLoadoutItem().IsIsDisabledMarker.CompareTo(bEnt.AsLoadoutItem().IsIsDisabledMarker);
+ return aEnt.AsLoadoutItem().IsDisabled.CompareTo(bEnt.AsLoadoutItem().IsDisabled);
}
}
diff --git a/src/NexusMods.Library/AddLibraryFileJobWorker.cs b/src/NexusMods.Library/AddLibraryFileJobWorker.cs
index 287487168..112c26a5d 100644
--- a/src/NexusMods.Library/AddLibraryFileJobWorker.cs
+++ b/src/NexusMods.Library/AddLibraryFileJobWorker.cs
@@ -112,7 +112,7 @@ protected override async Task ExecuteAsync(AddLibraryFileJob job, Can
job.LibraryArchive = new LibraryArchive.New(job.Transaction, job.EntityId.Value)
{
LibraryFile = job.LibraryFile.Value,
- IsIsLibraryArchiveMarker = true,
+ IsArchive = true,
};
}
diff --git a/src/NexusMods.Library/InstallLoadoutItemJobWorker.cs b/src/NexusMods.Library/InstallLoadoutItemJobWorker.cs
index a1a6a2781..5a808af16 100644
--- a/src/NexusMods.Library/InstallLoadoutItemJobWorker.cs
+++ b/src/NexusMods.Library/InstallLoadoutItemJobWorker.cs
@@ -73,7 +73,7 @@ protected override async Task ExecuteAsync(InstallLoadoutItemJob job,
var transaction = job.Connection.BeginTransaction();
var loadoutGroup = new LoadoutItemGroup.New(transaction, out var groupId)
{
- IsIsLoadoutItemGroupMarker = true,
+ IsGroup = true,
LoadoutItem = new LoadoutItem.New(transaction, groupId)
{
Name = job.LibraryItem.Name,
diff --git a/tests/Games/NexusMods.Games.RedEngine.Tests/Cyberpunk2077DiagnosticTests.cs b/tests/Games/NexusMods.Games.RedEngine.Tests/Cyberpunk2077DiagnosticTests.cs
index 9f7fc2302..742799ce8 100644
--- a/tests/Games/NexusMods.Games.RedEngine.Tests/Cyberpunk2077DiagnosticTests.cs
+++ b/tests/Games/NexusMods.Games.RedEngine.Tests/Cyberpunk2077DiagnosticTests.cs
@@ -108,7 +108,7 @@ public async Task PathBasedDiagnosticEmittersLookAtTheCorrectPaths(Type diagnost
{
var dependencyMod = LoadoutItemGroup.Load(Connection.Db, loadout.Items.First(m => m.Name == "DependencyMod").Id);
using var tx = Connection.BeginTransaction();
- tx.Add(dependencyMod, LoadoutItem.IsDisabledMarker, Null.Instance);
+ tx.Add(dependencyMod, LoadoutItem.Disabled, Null.Instance);
await tx.Commit();
}
diff --git a/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/RedModInstallerTests.CanInstallRedMod_filename=one_mod.7z.verified.txt b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/RedModInstallerTests.CanInstallRedMod_filename=one_mod.7z.verified.txt
index 7b544b726..926b1c7cf 100644
--- a/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/RedModInstallerTests.CanInstallRedMod_filename=one_mod.7z.verified.txt
+++ b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/RedModInstallerTests.CanInstallRedMod_filename=one_mod.7z.verified.txt
@@ -1,12 +1,12 @@
+ | 0200000000000000 | Timestamp | DateTime : 0 | 0200000000000000
+ | 0200000000000001 | Name | one_mod.7z | 0200000000000000
+ | 0200000000000001 | Loadout | 0200000000000002 | 0200000000000000
-+ | 0200000000000001 | IsLoadoutItemGroupMarker | Null | 0200000000000000
++ | 0200000000000001 | Group | Null | 0200000000000000
+ | 0200000000000003 | RedModInfoFile | 0200000000000004 | 0200000000000000
+ | 0200000000000003 | Name | Driver_Shotgun | 0200000000000000
+ | 0200000000000003 | Loadout | 0200000000000002 | 0200000000000000
+ | 0200000000000003 | Parent | 0200000000000001 | 0200000000000000
-+ | 0200000000000003 | IsLoadoutItemGroupMarker | Null | 0200000000000000
++ | 0200000000000003 | Group | Null | 0200000000000000
+ | 0200000000000004 | Name | Driver_Shotgun | 0200000000000000
+ | 0200000000000004 | Version | 1.0.0 | 0200000000000000
+ | 0200000000000004 | Name | info.json | 0200000000000000
diff --git a/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/RedModInstallerTests.CanInstallRedMod_filename=several_red_mods.7z.verified.txt b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/RedModInstallerTests.CanInstallRedMod_filename=several_red_mods.7z.verified.txt
index d28b1771e..3062ff48b 100644
--- a/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/RedModInstallerTests.CanInstallRedMod_filename=several_red_mods.7z.verified.txt
+++ b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/RedModInstallerTests.CanInstallRedMod_filename=several_red_mods.7z.verified.txt
@@ -1,12 +1,12 @@
+ | 0200000000000000 | Timestamp | DateTime : 0 | 0200000000000000
+ | 0200000000000001 | Name | several_red_mods.7z | 0200000000000000
+ | 0200000000000001 | Loadout | 0200000000000002 | 0200000000000000
-+ | 0200000000000001 | IsLoadoutItemGroupMarker | Null | 0200000000000000
++ | 0200000000000001 | Group | Null | 0200000000000000
+ | 0200000000000003 | RedModInfoFile | 0200000000000004 | 0200000000000000
+ | 0200000000000003 | Name | Maestros of Synth - Body Heat Radio | 0200000000000000
+ | 0200000000000003 | Loadout | 0200000000000002 | 0200000000000000
+ | 0200000000000003 | Parent | 0200000000000001 | 0200000000000000
-+ | 0200000000000003 | IsLoadoutItemGroupMarker | Null | 0200000000000000
++ | 0200000000000003 | Group | Null | 0200000000000000
+ | 0200000000000005 | Name | 0eaacf6f-394e-45e7-a958-9e10701b1711 | 0200000000000000
+ | 0200000000000005 | Loadout | 0200000000000002 | 0200000000000000
+ | 0200000000000005 | Parent | 0200000000000003 | 0200000000000000
@@ -97,7 +97,7 @@
+ | 0200000000000012 | Name | Maestros of Synth - Morro Rock Radio | 0200000000000000
+ | 0200000000000012 | Loadout | 0200000000000002 | 0200000000000000
+ | 0200000000000012 | Parent | 0200000000000001 | 0200000000000000
-+ | 0200000000000012 | IsLoadoutItemGroupMarker | Null | 0200000000000000
++ | 0200000000000012 | Group | Null | 0200000000000000
+ | 0200000000000014 | Name | 04941c4c-7214-45de-9681-4b18c91cc28b | 0200000000000000
+ | 0200000000000014 | Loadout | 0200000000000002 | 0200000000000000
+ | 0200000000000014 | Parent | 0200000000000012 | 0200000000000000
@@ -206,7 +206,7 @@
+ | 0200000000000024 | Name | Maestros of Synth - Night FN | 0200000000000000
+ | 0200000000000024 | Loadout | 0200000000000002 | 0200000000000000
+ | 0200000000000024 | Parent | 0200000000000001 | 0200000000000000
-+ | 0200000000000024 | IsLoadoutItemGroupMarker | Null | 0200000000000000
++ | 0200000000000024 | Group | Null | 0200000000000000
+ | 0200000000000026 | Name | 1838a296-fb33-4eca-9ffa-7cf9dbecbdad | 0200000000000000
+ | 0200000000000026 | Loadout | 0200000000000002 | 0200000000000000
+ | 0200000000000026 | Parent | 0200000000000024 | 0200000000000000
@@ -303,7 +303,7 @@
+ | 0200000000000034 | Name | Maestros of Synth - Pacific Dreams | 0200000000000000
+ | 0200000000000034 | Loadout | 0200000000000002 | 0200000000000000
+ | 0200000000000034 | Parent | 0200000000000001 | 0200000000000000
-+ | 0200000000000034 | IsLoadoutItemGroupMarker | Null | 0200000000000000
++ | 0200000000000034 | Group | Null | 0200000000000000
+ | 0200000000000036 | Name | 1779f39f-b829-4628-95b9-60b33e98d922 | 0200000000000000
+ | 0200000000000036 | Loadout | 0200000000000002 | 0200000000000000
+ | 0200000000000036 | Parent | 0200000000000034 | 0200000000000000
@@ -418,7 +418,7 @@
+ | 0200000000000047 | Name | Maestros of Synth - Principales | 0200000000000000
+ | 0200000000000047 | Loadout | 0200000000000002 | 0200000000000000
+ | 0200000000000047 | Parent | 0200000000000001 | 0200000000000000
-+ | 0200000000000047 | IsLoadoutItemGroupMarker | Null | 0200000000000000
++ | 0200000000000047 | Group | Null | 0200000000000000
+ | 0200000000000049 | Name | 485542b0-6f35-4ab5-bdd8-074292518e08 | 0200000000000000
+ | 0200000000000049 | Loadout | 0200000000000002 | 0200000000000000
+ | 0200000000000049 | Parent | 0200000000000047 | 0200000000000000
@@ -497,7 +497,7 @@
+ | 0200000000000054 | Name | Maestros of Synth - Radio Pebkac | 0200000000000000
+ | 0200000000000054 | Loadout | 0200000000000002 | 0200000000000000
+ | 0200000000000054 | Parent | 0200000000000001 | 0200000000000000
-+ | 0200000000000054 | IsLoadoutItemGroupMarker | Null | 0200000000000000
++ | 0200000000000054 | Group | Null | 0200000000000000
+ | 0200000000000056 | Name | 12641980-0bb6-4bfc-98eb-081d305f8086 | 0200000000000000
+ | 0200000000000056 | Loadout | 0200000000000002 | 0200000000000000
+ | 0200000000000056 | Parent | 0200000000000054 | 0200000000000000
@@ -606,7 +606,7 @@
+ | 0200000000000066 | Name | Maestros of Synth - Radio Vexelstorm | 0200000000000000
+ | 0200000000000066 | Loadout | 0200000000000002 | 0200000000000000
+ | 0200000000000066 | Parent | 0200000000000001 | 0200000000000000
-+ | 0200000000000066 | IsLoadoutItemGroupMarker | Null | 0200000000000000
++ | 0200000000000066 | Group | Null | 0200000000000000
+ | 0200000000000068 | Name | 0022aba5-fe2c-411e-a9b3-5133bac9da88 | 0200000000000000
+ | 0200000000000068 | Loadout | 0200000000000002 | 0200000000000000
+ | 0200000000000068 | Parent | 0200000000000066 | 0200000000000000
@@ -709,7 +709,7 @@
+ | 0200000000000077 | Name | Maestros of Synth - Ritual FM | 0200000000000000
+ | 0200000000000077 | Loadout | 0200000000000002 | 0200000000000000
+ | 0200000000000077 | Parent | 0200000000000001 | 0200000000000000
-+ | 0200000000000077 | IsLoadoutItemGroupMarker | Null | 0200000000000000
++ | 0200000000000077 | Group | Null | 0200000000000000
+ | 0200000000000079 | Name | 3c90ddc2-3b63-4d4d-bf95-8eefceb437d4 | 0200000000000000
+ | 0200000000000079 | Loadout | 0200000000000002 | 0200000000000000
+ | 0200000000000079 | Parent | 0200000000000077 | 0200000000000000
@@ -806,7 +806,7 @@
+ | 0200000000000087 | Name | Maestros of Synth - Royal Blue Radio | 0200000000000000
+ | 0200000000000087 | Loadout | 0200000000000002 | 0200000000000000
+ | 0200000000000087 | Parent | 0200000000000001 | 0200000000000000
-+ | 0200000000000087 | IsLoadoutItemGroupMarker | Null | 0200000000000000
++ | 0200000000000087 | Group | Null | 0200000000000000
+ | 0200000000000089 | Name | 2b6e73bf-f34a-46a0-8f87-3e32858f1af1 | 0200000000000000
+ | 0200000000000089 | Loadout | 0200000000000002 | 0200000000000000
+ | 0200000000000089 | Parent | 0200000000000087 | 0200000000000000
@@ -873,7 +873,7 @@
+ | 0200000000000092 | Name | Maestros of Synth - SAMIZDAT RADIO | 0200000000000000
+ | 0200000000000092 | Loadout | 0200000000000002 | 0200000000000000
+ | 0200000000000092 | Parent | 0200000000000001 | 0200000000000000
-+ | 0200000000000092 | IsLoadoutItemGroupMarker | Null | 0200000000000000
++ | 0200000000000092 | Group | Null | 0200000000000000
+ | 0200000000000094 | Name | 0969fbd3-d49d-4164-a761-a3834d09ec3f | 0200000000000000
+ | 0200000000000094 | Loadout | 0200000000000002 | 0200000000000000
+ | 0200000000000094 | Parent | 0200000000000092 | 0200000000000000
@@ -916,7 +916,7 @@
+ | 0200000000000099 | Name | Maestros of Synth - The Dirge | 0200000000000000
+ | 0200000000000099 | Loadout | 0200000000000002 | 0200000000000000
+ | 0200000000000099 | Parent | 0200000000000001 | 0200000000000000
-+ | 0200000000000099 | IsLoadoutItemGroupMarker | Null | 0200000000000000
++ | 0200000000000099 | Group | Null | 0200000000000000
+ | 020000000000009B | Name | 0999a784-7fac-425b-b886-eb0c0d523579 | 0200000000000000
+ | 020000000000009B | Loadout | 0200000000000002 | 0200000000000000
+ | 020000000000009B | Parent | 0200000000000099 | 0200000000000000
diff --git a/tests/Games/NexusMods.Games.StardewValley.Tests/StardewValleySynchronizerTests.cs b/tests/Games/NexusMods.Games.StardewValley.Tests/StardewValleySynchronizerTests.cs
index 03569e3c8..d424250b6 100644
--- a/tests/Games/NexusMods.Games.StardewValley.Tests/StardewValleySynchronizerTests.cs
+++ b/tests/Games/NexusMods.Games.StardewValley.Tests/StardewValleySynchronizerTests.cs
@@ -30,7 +30,7 @@ public async Task FilesInModFoldersAreMovedIntoMods()
{
LoadoutItemGroup = new LoadoutItemGroup.New(tx, modId)
{
- IsIsLoadoutItemGroupMarker = true,
+ IsGroup = true,
LoadoutItem = new LoadoutItem.New(tx, modId)
{
LoadoutId = loadout,
@@ -39,7 +39,7 @@ public async Task FilesInModFoldersAreMovedIntoMods()
},
ManifestId = new SMAPIManifestLoadoutFile.New(tx, out var fileId)
{
- IsIsManifestMarker = true,
+ IsManifestFile = true,
LoadoutFile = new LoadoutFile.New(tx, fileId)
{
Hash = manifestHash,
diff --git a/tests/Games/NexusMods.Games.TestFramework/AGameTest.cs b/tests/Games/NexusMods.Games.TestFramework/AGameTest.cs
index cf5600282..4fba429b9 100644
--- a/tests/Games/NexusMods.Games.TestFramework/AGameTest.cs
+++ b/tests/Games/NexusMods.Games.TestFramework/AGameTest.cs
@@ -100,7 +100,7 @@ protected LoadoutItemGroupId AddEmptyGroup(ITransaction tx, LoadoutId loadoutId,
{
var mod = new LoadoutItemGroup.New(tx, out var id)
{
- IsIsLoadoutItemGroupMarker = true,
+ IsGroup = true,
LoadoutItem = new LoadoutItem.New(tx, id)
{
LoadoutId = loadoutId,
diff --git a/tests/Games/NexusMods.Games.TestFramework/ALibraryArchiveInstallerTests.cs b/tests/Games/NexusMods.Games.TestFramework/ALibraryArchiveInstallerTests.cs
index c2e9c787a..f364a5c37 100644
--- a/tests/Games/NexusMods.Games.TestFramework/ALibraryArchiveInstallerTests.cs
+++ b/tests/Games/NexusMods.Games.TestFramework/ALibraryArchiveInstallerTests.cs
@@ -93,7 +93,7 @@ protected ALibraryArchiveInstallerTests(IServiceProvider serviceProvider) : base
var loadoutGroup = new LoadoutItemGroup.New(tx, out var groupId)
{
- IsIsLoadoutItemGroupMarker = true,
+ IsGroup = true,
LoadoutItem = new LoadoutItem.New(tx, groupId)
{
Name = libraryItem.Name,