From d6f0630a99aabfcb635db19e2e9f1e3213d59cf6 Mon Sep 17 00:00:00 2001 From: glax Date: Thu, 3 Jul 2025 20:21:48 +0200 Subject: [PATCH] StartNewChapterDownloadsWorker.cs --- .../CheckForNewChaptersWorker.cs | 8 +++---- .../CleanupMangaCoversWorker.cs | 0 .../SendNotificationsWorker.cs | 0 .../StartNewChapterDownloadsWorker.cs | 21 +++++++++++++++++++ .../UpdateChaptersDownloadedWorker.cs | 0 5 files changed, 24 insertions(+), 5 deletions(-) rename API/Workers/{ => PeriodicWorkers}/CheckForNewChaptersWorker.cs (56%) rename API/Workers/{ => PeriodicWorkers}/MaintenanceWorkers/CleanupMangaCoversWorker.cs (100%) rename API/Workers/{ => PeriodicWorkers}/SendNotificationsWorker.cs (100%) create mode 100644 API/Workers/PeriodicWorkers/StartNewChapterDownloadsWorker.cs rename API/Workers/{MaintenanceWorkers => PeriodicWorkers}/UpdateChaptersDownloadedWorker.cs (100%) diff --git a/API/Workers/CheckForNewChaptersWorker.cs b/API/Workers/PeriodicWorkers/CheckForNewChaptersWorker.cs similarity index 56% rename from API/Workers/CheckForNewChaptersWorker.cs rename to API/Workers/PeriodicWorkers/CheckForNewChaptersWorker.cs index 0187166..d63bf08 100644 --- a/API/Workers/CheckForNewChaptersWorker.cs +++ b/API/Workers/PeriodicWorkers/CheckForNewChaptersWorker.cs @@ -2,20 +2,18 @@ using API.Schema.MangaContext; namespace API.Workers; -public class CheckForNewChaptersWorker(Manga manga, TimeSpan? interval = null, IEnumerable? dependsOn = null) +public class CheckForNewChaptersWorker(TimeSpan? interval = null, IEnumerable? dependsOn = null) : BaseWorkerWithContext(dependsOn), IPeriodic { - public Manga Manga = manga; public DateTime LastExecution { get; set; } = DateTime.UtcNow; public TimeSpan Interval { get; set; } = interval??TimeSpan.FromMinutes(60); protected override BaseWorker[] DoWorkInternal() { - ICollection> connectorIdsManga = Manga.MangaConnectorIds; - IEnumerable> mangasToDownload = connectorIdsManga.Where(id => id.UseForDownload); + IQueryable> connectorIdsManga = DbContext.MangaConnectorToManga.Where(id => id.UseForDownload); List newWorkers = new(); - foreach (MangaConnectorId mangaConnectorId in mangasToDownload) + foreach (MangaConnectorId mangaConnectorId in connectorIdsManga) newWorkers.Add(new RetrieveMangaChaptersFromMangaconnectorWorker(mangaConnectorId, Tranga.Settings.DownloadLanguage)); return newWorkers.ToArray(); diff --git a/API/Workers/MaintenanceWorkers/CleanupMangaCoversWorker.cs b/API/Workers/PeriodicWorkers/MaintenanceWorkers/CleanupMangaCoversWorker.cs similarity index 100% rename from API/Workers/MaintenanceWorkers/CleanupMangaCoversWorker.cs rename to API/Workers/PeriodicWorkers/MaintenanceWorkers/CleanupMangaCoversWorker.cs diff --git a/API/Workers/SendNotificationsWorker.cs b/API/Workers/PeriodicWorkers/SendNotificationsWorker.cs similarity index 100% rename from API/Workers/SendNotificationsWorker.cs rename to API/Workers/PeriodicWorkers/SendNotificationsWorker.cs diff --git a/API/Workers/PeriodicWorkers/StartNewChapterDownloadsWorker.cs b/API/Workers/PeriodicWorkers/StartNewChapterDownloadsWorker.cs new file mode 100644 index 0000000..748680f --- /dev/null +++ b/API/Workers/PeriodicWorkers/StartNewChapterDownloadsWorker.cs @@ -0,0 +1,21 @@ +using API.Schema.MangaContext; + +namespace API.Workers; + +public class StartNewChapterDownloadsWorker(TimeSpan? interval = null, IEnumerable? dependsOn = null) + : BaseWorkerWithContext(dependsOn), IPeriodic +{ + + public DateTime LastExecution { get; set; } = DateTime.UtcNow; + public TimeSpan Interval { get; set; } = interval ?? TimeSpan.FromMinutes(120); + protected override BaseWorker[] DoWorkInternal() + { + IQueryable> mangaConnectorIds = DbContext.MangaConnectorToChapter.Where(id => id.Obj.Downloaded == false && id.UseForDownload); + + List newWorkers = new(); + foreach (MangaConnectorId mangaConnectorId in mangaConnectorIds) + newWorkers.Add(new DownloadChapterFromMangaconnectorWorker(mangaConnectorId)); + + return newWorkers.ToArray(); + } +} \ No newline at end of file diff --git a/API/Workers/MaintenanceWorkers/UpdateChaptersDownloadedWorker.cs b/API/Workers/PeriodicWorkers/UpdateChaptersDownloadedWorker.cs similarity index 100% rename from API/Workers/MaintenanceWorkers/UpdateChaptersDownloadedWorker.cs rename to API/Workers/PeriodicWorkers/UpdateChaptersDownloadedWorker.cs