mirror of
https://github.com/claunia/romrepomgr.git
synced 2025-12-16 19:24:51 +00:00
Compare commits
10 Commits
e66e1692fc
...
5096884f2a
| Author | SHA1 | Date | |
|---|---|---|---|
|
5096884f2a
|
|||
|
1a4c1230d9
|
|||
|
4e12e4b5c0
|
|||
|
da542faeb3
|
|||
|
31db3fff4b
|
|||
|
4f96535b51
|
|||
|
55b4018ebd
|
|||
|
4a9161d04b
|
|||
|
22cd868b1d
|
|||
|
ba09ba1bf5
|
@@ -1464,6 +1464,7 @@ dotnet_diagnostic.ph2045.severity = none
|
||||
dotnet_diagnostic.ph2067.severity = none
|
||||
dotnet_diagnostic.ph2068.severity = none
|
||||
dotnet_diagnostic.ph2069.severity = warning
|
||||
dotnet_diagnostic.ph2070.severity = warning
|
||||
dotnet_diagnostic.ph2075.severity = none
|
||||
dotnet_diagnostic.ph2079.severity = none
|
||||
dotnet_diagnostic.ph2081.severity = none
|
||||
@@ -1477,6 +1478,7 @@ dotnet_diagnostic.ph2098.severity = warning
|
||||
dotnet_diagnostic.ph2101.severity = warning
|
||||
dotnet_diagnostic.ph2102.severity = none
|
||||
dotnet_diagnostic.mt1001.severity = warning
|
||||
dotnet_diagnostic.mt1002.severity = warning
|
||||
|
||||
[*.{razor}]
|
||||
resharper_normalize_tag_names = false
|
||||
@@ -19,10 +19,10 @@
|
||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite.Design" Version="2.0.0-preview1-final"/>
|
||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.6"/>
|
||||
<PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="9.0.6"/>
|
||||
<PackageVersion Include="Microsoft.VisualStudio.Threading.Analyzers" Version="17.10.48"/>
|
||||
<PackageVersion Include="Microsoft.VisualStudio.Threading.Analyzers" Version="17.14.15"/>
|
||||
<PackageVersion Include="Microsoft.Win32.Registry" Version="5.0.0"/>
|
||||
<PackageVersion Include="Mono.Fuse.NETStandard" Version="1.1.0"/>
|
||||
<PackageVersion Include="Philips.CodeAnalysis.MaintainabilityAnalyzers" Version="1.5.0"/>
|
||||
<PackageVersion Include="Philips.CodeAnalysis.MaintainabilityAnalyzers" Version="1.6.3"/>
|
||||
<PackageVersion Include="plist-cil" Version="2.2.0"/>
|
||||
<PackageVersion Include="Roslynator.Analyzers" Version="4.13.1"/>
|
||||
<PackageVersion Include="Roslynator.CodeAnalysis.Analyzers" Version="4.13.1"/>
|
||||
@@ -33,6 +33,7 @@
|
||||
<PackageVersion Include="System.Security.Principal.Windows" Version="5.0.0"/>
|
||||
<PackageVersion Include="Text.Analyzers" Version="4.14.0"/>
|
||||
<PackageVersion Include="winfsp.net" Version="2.1.25156"/>
|
||||
<PackageVersion Include="SkiaSharp.NativeAssets.Linux" Version="3.116.1" Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Linux)))'" />
|
||||
|
||||
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3"/>
|
||||
<PackageVersion Include="SabreTools.Hashing" Version="1.2.3"/>
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
<ProjectReference Include="..\RomRepoMgr.Settings\RomRepoMgr.Settings.csproj"/>
|
||||
<ProjectReference Include="..\SabreTools\SabreTools.DatFiles\SabreTools.DatFiles.csproj"/>
|
||||
<ProjectReference Include="..\SabreTools\SabreTools.DatItems\SabreTools.DatItems.csproj"/>
|
||||
<ProjectReference Include="..\SabreTools\SabreTools.DatTools\SabreTools.DatTools.csproj" />
|
||||
<ProjectReference Include="..\SabreTools\SabreTools.FileTypes\SabreTools.FileTypes.csproj"/>
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@ using RomRepoMgr.Core.Resources;
|
||||
using RomRepoMgr.Database;
|
||||
using RomRepoMgr.Database.Models;
|
||||
using SabreTools.DatFiles;
|
||||
using SabreTools.DatTools;
|
||||
using SabreTools.Models.Metadata;
|
||||
using DatItem = SabreTools.DatItems.DatItem;
|
||||
using Disk = SabreTools.DatItems.Formats.Disk;
|
||||
@@ -79,8 +80,8 @@ public sealed class DatImporter
|
||||
Message = Localization.ParsinDatFile
|
||||
});
|
||||
|
||||
var datFile = DatFile.Create();
|
||||
datFile.ParseFile(_datPath, 0, false, true);
|
||||
DatFile datFile = Parser.ParseStatistics(_datPath);
|
||||
Parser.ParseInto(datFile, _datPath, throwOnError: true);
|
||||
|
||||
SetMessage?.Invoke(this,
|
||||
new MessageEventArgs
|
||||
@@ -151,14 +152,7 @@ public sealed class DatImporter
|
||||
Message = Localization.GettingMachineNames
|
||||
});
|
||||
|
||||
var machineNames = (from value in datFile.Items.Values
|
||||
from item in value
|
||||
select item.GetFieldValue<SabreTools.DatItems.Machine>(DatItem.MachineKey)
|
||||
?.GetStringFieldValue(SabreTools.Models.Metadata.Machine.NameKey)
|
||||
into m
|
||||
where m is not null
|
||||
select m).Distinct()
|
||||
.ToList();
|
||||
var machineNames = datFile.Items.SortedKeys.Distinct().ToList();
|
||||
|
||||
SetMessage?.Invoke(this,
|
||||
new MessageEventArgs
|
||||
@@ -251,7 +245,7 @@ public sealed class DatImporter
|
||||
new ProgressBoundsEventArgs
|
||||
{
|
||||
Minimum = 0,
|
||||
Maximum = datFile.Items.Values.Count
|
||||
Maximum = datFile.Items.SortedKeys.Length
|
||||
});
|
||||
|
||||
using(DbTransaction dbTransaction = dbConnection.BeginTransaction())
|
||||
@@ -308,7 +302,7 @@ public sealed class DatImporter
|
||||
dbcc.CommandText = $"CREATE TABLE \"{tmpMediaSha256Table}\" (\"Sha256\" TEXT NOT NULL);";
|
||||
dbcc.ExecuteNonQuery();
|
||||
|
||||
foreach(List<DatItem> values in datFile.Items.Values)
|
||||
foreach(string key in datFile.Items.SortedKeys)
|
||||
{
|
||||
SetProgress?.Invoke(this,
|
||||
new ProgressEventArgs
|
||||
@@ -316,7 +310,7 @@ public sealed class DatImporter
|
||||
Value = position
|
||||
});
|
||||
|
||||
foreach(DatItem item in values)
|
||||
foreach(DatItem item in datFile.GetItemsForBucket(key))
|
||||
{
|
||||
switch(item)
|
||||
{
|
||||
@@ -477,76 +471,76 @@ public sealed class DatImporter
|
||||
|
||||
List<DbFile> pendingFilesByCrcList = romsHaveCrc
|
||||
? ctx.Files
|
||||
.FromSql($"SELECT DISTINCT f.* FROM Files AS f, [{tmpRomCrc32Table}] AS t WHERE f.Crc32 = t.Crc32 AND f.Size = t.Size")
|
||||
.FromSqlRaw($"SELECT DISTINCT f.* FROM Files AS f, [{tmpRomCrc32Table}] AS t WHERE f.Crc32 = t.Crc32 AND f.Size = t.Size")
|
||||
.ToList()
|
||||
: [];
|
||||
|
||||
List<DbFile> pendingFilesByMd5List = romsHaveMd5
|
||||
? ctx.Files
|
||||
.FromSql($"SELECT DISTINCT f.* FROM Files AS f, [{tmpRomMd5Table}] AS t WHERE f.Md5 = t.Md5 AND f.Size = t.Size")
|
||||
.FromSqlRaw($"SELECT DISTINCT f.* FROM Files AS f, [{tmpRomMd5Table}] AS t WHERE f.Md5 = t.Md5 AND f.Size = t.Size")
|
||||
.ToList()
|
||||
: [];
|
||||
|
||||
List<DbFile> pendingFilesBySha1List =
|
||||
romsHaveSha1
|
||||
? ctx.Files
|
||||
.FromSql($"SELECT DISTINCT f.* FROM Files AS f, [{tmpRomSha1Table}] AS t WHERE f.Sha1 = t.Sha1 AND f.Size = t.Size")
|
||||
.FromSqlRaw($"SELECT DISTINCT f.* FROM Files AS f, [{tmpRomSha1Table}] AS t WHERE f.Sha1 = t.Sha1 AND f.Size = t.Size")
|
||||
.ToList()
|
||||
: [];
|
||||
|
||||
List<DbFile> pendingFilesBySha256List =
|
||||
romsHaveSha256
|
||||
? ctx.Files
|
||||
.FromSql($"SELECT DISTINCT f.* FROM Files AS f, [{tmpRomSha256Table}] AS t WHERE f.Sha256 = t.Sha256 AND f.Size = t.Size")
|
||||
.FromSqlRaw($"SELECT DISTINCT f.* FROM Files AS f, [{tmpRomSha256Table}] AS t WHERE f.Sha256 = t.Sha256 AND f.Size = t.Size")
|
||||
.ToList()
|
||||
: [];
|
||||
|
||||
List<DbFile> pendingFilesBySha384List =
|
||||
romsHaveSha384
|
||||
? ctx.Files
|
||||
.FromSql($"SELECT DISTINCT f.* FROM Files AS f, [{tmpRomSha384Table}] AS t WHERE f.Sha384 = t.Sha384 AND f.Size = t.Size")
|
||||
.FromSqlRaw($"SELECT DISTINCT f.* FROM Files AS f, [{tmpRomSha384Table}] AS t WHERE f.Sha384 = t.Sha384 AND f.Size = t.Size")
|
||||
.ToList()
|
||||
: [];
|
||||
|
||||
List<DbFile> pendingFilesBySha512List =
|
||||
romsHaveSha512
|
||||
? ctx.Files
|
||||
.FromSql($"SELECT DISTINCT f.* FROM Files AS f, [{tmpRomSha512Table}] AS t WHERE f.Sha512 = t.Sha512 AND f.Size = t.Size")
|
||||
.FromSqlRaw($"SELECT DISTINCT f.* FROM Files AS f, [{tmpRomSha512Table}] AS t WHERE f.Sha512 = t.Sha512 AND f.Size = t.Size")
|
||||
.ToList()
|
||||
: [];
|
||||
|
||||
Dictionary<string, DbDisk> pendingDisksByMd5 =
|
||||
disksHaveMd5
|
||||
? ctx.Disks
|
||||
.FromSql($"SELECT DISTINCT f.* FROM Disks AS f, [{tmpDiskMd5Table}] AS t WHERE f.Md5 = t.Md5")
|
||||
.FromSqlRaw($"SELECT DISTINCT f.* FROM Disks AS f, [{tmpDiskMd5Table}] AS t WHERE f.Md5 = t.Md5")
|
||||
.ToDictionary(f => f.Md5)
|
||||
: new Dictionary<string, DbDisk>();
|
||||
|
||||
Dictionary<string, DbDisk> pendingDisksBySha1 =
|
||||
disksHaveSha1
|
||||
? ctx.Disks
|
||||
.FromSql($"SELECT DISTINCT f.* FROM Disks AS f, [{tmpDiskSha1Table}] AS t WHERE f.Sha1 = t.Sha1")
|
||||
.FromSqlRaw($"SELECT DISTINCT f.* FROM Disks AS f, [{tmpDiskSha1Table}] AS t WHERE f.Sha1 = t.Sha1")
|
||||
.ToDictionary(f => f.Sha1)
|
||||
: new Dictionary<string, DbDisk>();
|
||||
|
||||
Dictionary<string, DbMedia> pendingMediasByMd5 =
|
||||
mediasHaveMd5
|
||||
? ctx.Medias
|
||||
.FromSql($"SELECT DISTINCT f.* FROM Medias AS f, [{tmpMediaMd5Table}] AS t WHERE f.Md5 = t.Md5")
|
||||
.FromSqlRaw($"SELECT DISTINCT f.* FROM Medias AS f, [{tmpMediaMd5Table}] AS t WHERE f.Md5 = t.Md5")
|
||||
.ToDictionary(f => f.Md5)
|
||||
: new Dictionary<string, DbMedia>();
|
||||
|
||||
Dictionary<string, DbMedia> pendingMediasBySha1 =
|
||||
mediasHaveSha1
|
||||
? ctx.Medias
|
||||
.FromSql($"SELECT DISTINCT f.* FROM Medias AS f, [{tmpMediaSha1Table}] AS t WHERE f.Sha1 = t.Sha1")
|
||||
.FromSqlRaw($"SELECT DISTINCT f.* FROM Medias AS f, [{tmpMediaSha1Table}] AS t WHERE f.Sha1 = t.Sha1")
|
||||
.ToDictionary(f => f.Sha1)
|
||||
: new Dictionary<string, DbMedia>();
|
||||
|
||||
Dictionary<string, DbMedia> pendingMediasBySha256 =
|
||||
mediasHaveSha256
|
||||
? ctx.Medias
|
||||
.FromSql($"SELECT DISTINCT f.* FROM Medias AS f, [{tmpMediaSha256Table}] AS t WHERE f.Sha256 = t.Sha256")
|
||||
.FromSqlRaw($"SELECT DISTINCT f.* FROM Medias AS f, [{tmpMediaSha256Table}] AS t WHERE f.Sha256 = t.Sha256")
|
||||
.ToDictionary(f => f.Sha256)
|
||||
: new Dictionary<string, DbMedia>();
|
||||
|
||||
@@ -656,7 +650,8 @@ public sealed class DatImporter
|
||||
});
|
||||
|
||||
if(!machines.TryGetValue(rom.GetFieldValue<SabreTools.DatItems.Machine>(DatItem.MachineKey)
|
||||
?.GetStringFieldValue(SabreTools.Models.Metadata.Machine.NameKey),
|
||||
?.GetStringFieldValue(SabreTools.Models.Metadata.Machine.NameKey)
|
||||
?.ToLowerInvariant(),
|
||||
out Machine machine))
|
||||
{
|
||||
ErrorOccurred?.Invoke(this,
|
||||
@@ -977,7 +972,8 @@ public sealed class DatImporter
|
||||
});
|
||||
|
||||
if(!machines.TryGetValue(disk.GetFieldValue<SabreTools.DatItems.Machine>(DatItem.MachineKey)
|
||||
?.GetStringFieldValue(SabreTools.Models.Metadata.Machine.NameKey),
|
||||
?.GetStringFieldValue(SabreTools.Models.Metadata.Machine.NameKey)
|
||||
?.ToLowerInvariant(),
|
||||
out Machine machine))
|
||||
{
|
||||
ErrorOccurred?.Invoke(this,
|
||||
@@ -1104,7 +1100,8 @@ public sealed class DatImporter
|
||||
});
|
||||
|
||||
if(!machines.TryGetValue(media.GetFieldValue<SabreTools.DatItems.Machine>(DatItem.MachineKey)
|
||||
?.GetStringFieldValue(SabreTools.Models.Metadata.Machine.NameKey),
|
||||
?.GetStringFieldValue(SabreTools.Models.Metadata.Machine.NameKey)
|
||||
?.ToLowerInvariant(),
|
||||
out Machine machine))
|
||||
{
|
||||
ErrorOccurred?.Invoke(this,
|
||||
|
||||
@@ -28,6 +28,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution items", "Solution
|
||||
Directory.Packages.props = Directory.Packages.props
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SabreTools.DatTools", "SabreTools\SabreTools.DatTools\SabreTools.DatTools.csproj", "{20CC9ED6-9F56-49B5-A265-DC246C424F27}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SabreTools.Reports", "SabreTools\SabreTools.Reports\SabreTools.Reports.csproj", "{E73767A7-0A65-4F89-B149-A520874F7B32}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
@@ -66,5 +70,13 @@ Global
|
||||
{F963F3F3-A8C3-4098-9050-D4426744D900}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F963F3F3-A8C3-4098-9050-D4426744D900}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F963F3F3-A8C3-4098-9050-D4426744D900}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{20CC9ED6-9F56-49B5-A265-DC246C424F27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{20CC9ED6-9F56-49B5-A265-DC246C424F27}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{20CC9ED6-9F56-49B5-A265-DC246C424F27}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{20CC9ED6-9F56-49B5-A265-DC246C424F27}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{E73767A7-0A65-4F89-B149-A520874F7B32}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E73767A7-0A65-4F89-B149-A520874F7B32}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E73767A7-0A65-4F89-B149-A520874F7B32}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E73767A7-0A65-4F89-B149-A520874F7B32}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
</Application.DataTemplates>
|
||||
<Application.Styles>
|
||||
<FluentTheme />
|
||||
<StyleInclude Source="avares://Avalonia.Controls.DataGrid/Themes/Fluent.xaml"/>
|
||||
</Application.Styles>
|
||||
<NativeMenu.Menu>
|
||||
<NativeMenu>
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
<PackageReference Include="Roslynator.Analyzers"/>
|
||||
<PackageReference Include="Roslynator.CodeAnalysis.Analyzers"/>
|
||||
<PackageReference Include="Roslynator.Formatting.Analyzers"/>
|
||||
<PackageReference Include="SkiaSharp.NativeAssets.Linux" />
|
||||
<PackageReference Include="SmartAnalyzers.MultithreadingAnalyzer"/>
|
||||
<PackageReference Include="Text.Analyzers"/>
|
||||
</ItemGroup>
|
||||
|
||||
Submodule SabreTools updated: 25f8f5e7c4...a8f14d46b7
Reference in New Issue
Block a user