From 2942c6dfc86aacbc85a9522dd41f2cb5cd8b43a0 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Thu, 31 Jul 2025 04:09:13 +0100 Subject: [PATCH] Do not import files that are already in the repository. --- RomRepoMgr.Blazor/Components/Dialogs/ImportRoms.razor.cs | 3 +++ RomRepoMgr.Core/Workers/FileImporter.cs | 8 ++++++++ RomRepoMgr/ViewModels/ImportRomFolderViewModel.cs | 3 +++ 3 files changed, 14 insertions(+) diff --git a/RomRepoMgr.Blazor/Components/Dialogs/ImportRoms.razor.cs b/RomRepoMgr.Blazor/Components/Dialogs/ImportRoms.razor.cs index d64e07e..4d64f54 100644 --- a/RomRepoMgr.Blazor/Components/Dialogs/ImportRoms.razor.cs +++ b/RomRepoMgr.Blazor/Components/Dialogs/ImportRoms.razor.cs @@ -327,6 +327,9 @@ public partial class ImportRoms : ComponentBase if(!archiveImporter.IsCrcInDb(reader.Entry.Crc) && KnownOnlyChecked) continue; + // Do not import files that are already in the repository + if(archiveImporter.IsInRepo(reader.Entry.Crc)) continue; + var worker = new FileImporter(_ctx, _newFiles, _newDisks, diff --git a/RomRepoMgr.Core/Workers/FileImporter.cs b/RomRepoMgr.Core/Workers/FileImporter.cs index e9ab92f..402a0de 100644 --- a/RomRepoMgr.Core/Workers/FileImporter.cs +++ b/RomRepoMgr.Core/Workers/FileImporter.cs @@ -556,6 +556,14 @@ public sealed class FileImporter } } + public bool IsInRepo(long crc32) + { + lock(DbLock) + { + return _ctx.Files.Any(f => f.Crc32 == crc32.ToString("x8") && f.IsInRepo); + } + } + public void ImportAndHashRom(Stream stream, string filename, string tempPath, long size) { try diff --git a/RomRepoMgr/ViewModels/ImportRomFolderViewModel.cs b/RomRepoMgr/ViewModels/ImportRomFolderViewModel.cs index 8ead91d..b75e0b9 100644 --- a/RomRepoMgr/ViewModels/ImportRomFolderViewModel.cs +++ b/RomRepoMgr/ViewModels/ImportRomFolderViewModel.cs @@ -410,6 +410,9 @@ public sealed partial class ImportRomFolderViewModel : ViewModelBase if(!archiveImporter.IsCrcInDb(reader.Entry.Crc) && KnownOnlyChecked) continue; + // Do not import files that are already in the repository + if(archiveImporter.IsInRepo(reader.Entry.Crc)) continue; + var model = new RomImporter { Filename = Path.GetFileName(reader.Entry.Key),