using API.Schema.MangaContext; using Microsoft.EntityFrameworkCore; namespace API.Workers; /// /// Create new Workers for Chapters on Manga marked for Download, that havent been downloaded yet. /// public class StartNewChapterDownloadsWorker(TimeSpan? interval = null, IEnumerable? dependsOn = null) : BaseWorkerWithContext(dependsOn), IPeriodic { public DateTime LastExecution { get; set; } = DateTime.UnixEpoch; public TimeSpan Interval { get; set; } = interval ?? TimeSpan.FromMinutes(1); protected override async Task DoWorkInternal() { Log.Debug("Checking for missing chapters..."); // Get missing chapters List> missingChapters = await DbContext.MangaConnectorToChapter .Include(id => id.Obj) .Where(id => id.Obj.Downloaded == false && id.UseForDownload) .ToListAsync(CancellationToken); Log.Debug($"Found {missingChapters.Count} missing downloads."); // Create new jobs List newWorkers = missingChapters.Select(mcId => new DownloadChapterFromMangaconnectorWorker(mcId)).ToList(); return newWorkers.ToArray(); } }