using API.Schema.MangaContext;
using Microsoft.EntityFrameworkCore;
namespace API.Workers;
///
/// Creates Jobs to update available Chapters for all Manga that are marked for Download
///
public class CheckForNewChaptersWorker(TimeSpan? interval = null, IEnumerable? dependsOn = null)
: BaseWorkerWithContext(dependsOn), IPeriodic
{
public DateTime LastExecution { get; set; } = DateTime.UnixEpoch;
public TimeSpan Interval { get; set; } = interval??TimeSpan.FromMinutes(60);
protected override async Task DoWorkInternal()
{
Log.Debug("Checking for new chapters...");
List> connectorIdsManga = await DbContext.MangaConnectorToManga
.Include(id => id.Obj)
.Where(id => id.UseForDownload)
.ToListAsync(CancellationToken);
Log.Debug($"Creating {connectorIdsManga.Count} update jobs...");
List newWorkers = connectorIdsManga.Select(id => new RetrieveMangaChaptersFromMangaconnectorWorker(id, Tranga.Settings.DownloadLanguage))
.ToList();
return newWorkers.ToArray();
}
}