using API.Schema.LibraryContext; using API.Schema.LibraryContext.LibraryConnectors; using Microsoft.EntityFrameworkCore; using Newtonsoft.Json; using Newtonsoft.Json.Converters; namespace API.Workers; public class RefreshLibrariesWorker(IEnumerable? dependsOn = null) : BaseWorkerWithContext(dependsOn) { public static DateTime LastRefresh { get; set; } = DateTime.UnixEpoch; protected override async Task DoWorkInternal() { Log.Debug("Refreshing libraries..."); LastRefresh = DateTime.UtcNow; List libraries = await DbContext.LibraryConnectors.ToListAsync(CancellationToken); foreach (LibraryConnector connector in libraries) await connector.UpdateLibrary(CancellationToken); Log.Debug("Libraries Refreshed..."); return []; } } [JsonConverter(typeof(StringEnumConverter))] public enum LibraryRefreshSetting : byte { /// /// Refresh Libraries after all Manga are downloaded /// AfterAllFinished = 0, /// /// Refresh Libraries after a Manga is downloaded /// AfterMangaFinished = 1, /// /// Refresh Libraries after every download /// AfterEveryChapter = 2, /// /// Refresh Libraries while downloading chapters, every x minutes /// WhileDownloading = 3 }