From c8be88d645096e0748383ae235bccde181c55a07 Mon Sep 17 00:00:00 2001 From: glax Date: Thu, 4 Sep 2025 22:50:17 +0200 Subject: [PATCH] Add new MangaConnectorId for existing Chapters to database --- ...veMangaChaptersFromMangaconnectorWorker.cs | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/API/Workers/MangaDownloadWorkers/RetrieveMangaChaptersFromMangaconnectorWorker.cs b/API/Workers/MangaDownloadWorkers/RetrieveMangaChaptersFromMangaconnectorWorker.cs index d2c463a..49a3e88 100644 --- a/API/Workers/MangaDownloadWorkers/RetrieveMangaChaptersFromMangaconnectorWorker.cs +++ b/API/Workers/MangaDownloadWorkers/RetrieveMangaChaptersFromMangaconnectorWorker.cs @@ -20,6 +20,8 @@ public class RetrieveMangaChaptersFromMangaconnectorWorker(MangaConnectorId id.Obj) + .ThenInclude(m => m.Chapters) + .ThenInclude(ch => ch.MangaConnectorIds) .FirstOrDefaultAsync(c => c.Key == MangaConnectorIdId, CancellationToken) is not { } mangaConnectorId) { Log.Error("Could not get MangaConnectorId."); @@ -33,8 +35,6 @@ public class RetrieveMangaChaptersFromMangaconnectorWorker(MangaConnectorId m.Chapters).LoadAsync(CancellationToken); // Retrieve available Chapters from Connector (Chapter chapter, MangaConnectorId chapterId)[] allChapters = @@ -46,6 +46,24 @@ public class RetrieveMangaChaptersFromMangaconnectorWorker(MangaConnectorId c.Key != ch.chapter.Key)).ToList(); Log.Debug($"Got {newChapters.Count} new chapters."); + // Add Chapters to Manga + manga.Chapters = manga.Chapters.Union(newChapters.Select(ch => ch.chapter)).ToList(); + + // Filter for new ChapterIds + List> existingChapterIds = manga.Chapters.SelectMany(c => c.MangaConnectorIds).ToList(); + List> newIds = allChapters.Select(ch => ch.chapterId) + .Where(newCh => !existingChapterIds.Any(existing => + existing.MangaConnectorName == newCh.MangaConnectorName && + existing.IdOnConnectorSite == newCh.IdOnConnectorSite)) + .ToList(); + // Match tracked entities of Chapters + foreach (MangaConnectorId newId in newIds) + newId.Obj = manga.Chapters.First(ch => ch.Key == newId.ObjId); + Log.Debug($"Got {newIds.Count} new download-Ids."); + + // Add new ChapterIds to Database + DbContext.MangaConnectorToChapter.AddRange(newIds); + // If Manga is marked for Download from Connector, mark the new Chapters as UseForDownload if (mangaConnectorId.UseForDownload) { @@ -55,9 +73,6 @@ public class RetrieveMangaChaptersFromMangaconnectorWorker(MangaConnectorId ch.chapter)).ToList(); - if(await DbContext.Sync(CancellationToken) is { success: false } e) Log.Error($"Failed to save database changes: {e.exceptionMessage}");