From ea627081b874de3a0642a9d3d8ccc6a833e07ec1 Mon Sep 17 00:00:00 2001 From: glax Date: Thu, 3 Jul 2025 21:17:08 +0200 Subject: [PATCH] Add default Tranga-Workers --- API/Tranga.cs | 15 +++++++++++++++ .../PeriodicWorkers/CheckForNewChaptersWorker.cs | 2 +- .../CleanupMangaCoversWorker.cs | 4 ++-- .../PeriodicWorkers/SendNotificationsWorker.cs | 2 +- .../StartNewChapterDownloadsWorker.cs | 2 +- .../UpdateChaptersDownloadedWorker.cs | 12 ++++-------- .../PeriodicWorkers/UpdateMetadataWorker.cs | 2 +- 7 files changed, 25 insertions(+), 14 deletions(-) diff --git a/API/Tranga.cs b/API/Tranga.cs index fcb2edb..1dea104 100644 --- a/API/Tranga.cs +++ b/API/Tranga.cs @@ -2,6 +2,7 @@ using API.Schema.MangaContext; using API.Schema.MangaContext.MetadataFetchers; using API.Workers; +using API.Workers.MaintenanceWorkers; using log4net; using log4net.Config; using Microsoft.EntityFrameworkCore; @@ -24,12 +25,26 @@ public static class Tranga private static readonly ILog Log = LogManager.GetLogger(typeof(Tranga)); internal static readonly MetadataFetcher[] MetadataFetchers = [new MyAnimeList()]; internal static TrangaSettings Settings = TrangaSettings.Load(); + + internal static readonly UpdateMetadataWorker UpdateMetadataWorker = new (); + internal static readonly SendNotificationsWorker SendNotificationsWorker = new(); + internal static readonly UpdateChaptersDownloadedWorker UpdateChaptersDownloadedWorker = new(); + internal static readonly CheckForNewChaptersWorker CheckForNewChaptersWorker = new(); + internal static readonly CleanupMangaCoversWorker CleanupMangaCoversWorker = new(); + internal static readonly StartNewChapterDownloadsWorker StartNewChapterDownloadsWorker = new(); internal static void StartLogger() { BasicConfigurator.Configure(); Log.Info("Logger Configured."); Log.Info(TRANGA); + + AddWorker(UpdateMetadataWorker); + AddWorker(SendNotificationsWorker); + AddWorker(UpdateChaptersDownloadedWorker); + AddWorker(CheckForNewChaptersWorker); + AddWorker(CleanupMangaCoversWorker); + AddWorker(StartNewChapterDownloadsWorker); } internal static HashSet AllWorkers { get; private set; } = new (); diff --git a/API/Workers/PeriodicWorkers/CheckForNewChaptersWorker.cs b/API/Workers/PeriodicWorkers/CheckForNewChaptersWorker.cs index d63bf08..2f12557 100644 --- a/API/Workers/PeriodicWorkers/CheckForNewChaptersWorker.cs +++ b/API/Workers/PeriodicWorkers/CheckForNewChaptersWorker.cs @@ -5,7 +5,7 @@ namespace API.Workers; public class CheckForNewChaptersWorker(TimeSpan? interval = null, IEnumerable? dependsOn = null) : BaseWorkerWithContext(dependsOn), IPeriodic { - public DateTime LastExecution { get; set; } = DateTime.UtcNow; + public DateTime LastExecution { get; set; } = DateTime.UnixEpoch; public TimeSpan Interval { get; set; } = interval??TimeSpan.FromMinutes(60); protected override BaseWorker[] DoWorkInternal() diff --git a/API/Workers/PeriodicWorkers/MaintenanceWorkers/CleanupMangaCoversWorker.cs b/API/Workers/PeriodicWorkers/MaintenanceWorkers/CleanupMangaCoversWorker.cs index 2705a8f..d131f7c 100644 --- a/API/Workers/PeriodicWorkers/MaintenanceWorkers/CleanupMangaCoversWorker.cs +++ b/API/Workers/PeriodicWorkers/MaintenanceWorkers/CleanupMangaCoversWorker.cs @@ -4,8 +4,8 @@ namespace API.Workers.MaintenanceWorkers; public class CleanupMangaCoversWorker(TimeSpan? interval = null, IEnumerable? dependsOn = null) : BaseWorkerWithContext(dependsOn), IPeriodic { - public DateTime LastExecution { get; set; } = DateTime.UtcNow; - public TimeSpan Interval { get; set; } = interval??TimeSpan.FromMinutes(60); + public DateTime LastExecution { get; set; } = DateTime.UnixEpoch; + public TimeSpan Interval { get; set; } = interval ?? TimeSpan.FromHours(24); protected override BaseWorker[] DoWorkInternal() { diff --git a/API/Workers/PeriodicWorkers/SendNotificationsWorker.cs b/API/Workers/PeriodicWorkers/SendNotificationsWorker.cs index caf0758..0dd27fd 100644 --- a/API/Workers/PeriodicWorkers/SendNotificationsWorker.cs +++ b/API/Workers/PeriodicWorkers/SendNotificationsWorker.cs @@ -6,7 +6,7 @@ namespace API.Workers; public class SendNotificationsWorker(TimeSpan? interval = null, IEnumerable? dependsOn = null) : BaseWorkerWithContext(dependsOn), IPeriodic { - public DateTime LastExecution { get; set; } = DateTime.UtcNow; + public DateTime LastExecution { get; set; } = DateTime.UnixEpoch; public TimeSpan Interval { get; set; } = interval??TimeSpan.FromMinutes(1); protected override BaseWorker[] DoWorkInternal() { diff --git a/API/Workers/PeriodicWorkers/StartNewChapterDownloadsWorker.cs b/API/Workers/PeriodicWorkers/StartNewChapterDownloadsWorker.cs index 748680f..9b70ba1 100644 --- a/API/Workers/PeriodicWorkers/StartNewChapterDownloadsWorker.cs +++ b/API/Workers/PeriodicWorkers/StartNewChapterDownloadsWorker.cs @@ -6,7 +6,7 @@ public class StartNewChapterDownloadsWorker(TimeSpan? interval = null, IEnumerab : BaseWorkerWithContext(dependsOn), IPeriodic { - public DateTime LastExecution { get; set; } = DateTime.UtcNow; + public DateTime LastExecution { get; set; } = DateTime.UnixEpoch; public TimeSpan Interval { get; set; } = interval ?? TimeSpan.FromMinutes(120); protected override BaseWorker[] DoWorkInternal() { diff --git a/API/Workers/PeriodicWorkers/UpdateChaptersDownloadedWorker.cs b/API/Workers/PeriodicWorkers/UpdateChaptersDownloadedWorker.cs index d7158f1..3d7e985 100644 --- a/API/Workers/PeriodicWorkers/UpdateChaptersDownloadedWorker.cs +++ b/API/Workers/PeriodicWorkers/UpdateChaptersDownloadedWorker.cs @@ -1,21 +1,17 @@ using API.Schema.MangaContext; namespace API.Workers; -public class UpdateChaptersDownloadedWorker(Manga manga, TimeSpan? interval = null, IEnumerable? dependsOn = null) +public class UpdateChaptersDownloadedWorker(TimeSpan? interval = null, IEnumerable? dependsOn = null) : BaseWorkerWithContext(dependsOn), IPeriodic { - public DateTime LastExecution { get; set; } = DateTime.UtcNow; + public DateTime LastExecution { get; set; } = DateTime.UnixEpoch; public TimeSpan Interval { get; set; } = interval??TimeSpan.FromMinutes(60); protected override BaseWorker[] DoWorkInternal() { - foreach (Chapter mangaChapter in manga.Chapters) - { - mangaChapter.Downloaded = mangaChapter.CheckDownloaded(); - } + foreach (Chapter dbContextChapter in DbContext.Chapters) + dbContextChapter.Downloaded = dbContextChapter.CheckDownloaded(); DbContext.Sync(); return []; } - - public override string ToString() => $"{base.ToString()} {manga}"; } \ No newline at end of file diff --git a/API/Workers/PeriodicWorkers/UpdateMetadataWorker.cs b/API/Workers/PeriodicWorkers/UpdateMetadataWorker.cs index dfb6532..6ded373 100644 --- a/API/Workers/PeriodicWorkers/UpdateMetadataWorker.cs +++ b/API/Workers/PeriodicWorkers/UpdateMetadataWorker.cs @@ -8,7 +8,7 @@ public class UpdateMetadataWorker(TimeSpan? interval = null, IEnumerable(dependsOn), IPeriodic { - public DateTime LastExecution { get; set; } = DateTime.UtcNow; + public DateTime LastExecution { get; set; } = DateTime.UnixEpoch; public TimeSpan Interval { get; set; } = interval ?? TimeSpan.FromHours(12); protected override BaseWorker[] DoWorkInternal()