From b3efcf19d9bc3ed9730625686f72dcf3a052d704 Mon Sep 17 00:00:00 2001 From: Glax Date: Sat, 17 May 2025 19:07:01 +0200 Subject: [PATCH] Manga GetCover, GetLatestDownloaded, GetLatestAvailable: Check if Jobs are running to fulfill request --- API/Controllers/MangaController.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/API/Controllers/MangaController.cs b/API/Controllers/MangaController.cs index d0cfa4c..eea2020 100644 --- a/API/Controllers/MangaController.cs +++ b/API/Controllers/MangaController.cs @@ -115,7 +115,7 @@ public class MangaController(PgsqlContext context, ILog Log) : Controller if (!System.IO.File.Exists(m.CoverFileNameInCache)) { List coverDownloadJobs = context.Jobs.Where(j => j.JobType == JobType.DownloadMangaCoverJob).ToList(); - if (coverDownloadJobs.Any(j => j is DownloadMangaCoverJob dmc && dmc.MangaId == MangaId)) + if (coverDownloadJobs.Any(j => j is DownloadMangaCoverJob dmc && dmc.MangaId == MangaId && dmc.state < JobState.Completed)) { Response.Headers.Append("Retry-After", $"{TrangaSettings.startNewJobTimeoutMs * coverDownloadJobs.Count() * 2 / 1000:D}"); return StatusCode(Status503ServiceUnavailable, TrangaSettings.startNewJobTimeoutMs * coverDownloadJobs.Count() * 2 / 1000); @@ -230,12 +230,12 @@ public class MangaController(PgsqlContext context, ILog Log) : Controller if (chapters.Count == 0) { List retrieveChapterJobs = context.Jobs.Where(j => j.JobType == JobType.RetrieveChaptersJob).ToList(); - if (retrieveChapterJobs.Any(j => j is RetrieveChaptersJob rcj && rcj.MangaId == MangaId)) + if (retrieveChapterJobs.Any(j => j is RetrieveChaptersJob rcj && rcj.MangaId == MangaId && rcj.state < JobState.Completed)) { Response.Headers.Append("Retry-After", $"{TrangaSettings.startNewJobTimeoutMs * retrieveChapterJobs.Count() * 2 / 1000:D}"); return StatusCode(Status503ServiceUnavailable, TrangaSettings.startNewJobTimeoutMs * retrieveChapterJobs.Count() * 2/ 1000); }else - return NoContent(); + return Ok(0); } Chapter? max = chapters.Max(); @@ -269,7 +269,7 @@ public class MangaController(PgsqlContext context, ILog Log) : Controller if (chapters.Count == 0) { List retrieveChapterJobs = context.Jobs.Where(j => j.JobType == JobType.RetrieveChaptersJob).ToList(); - if (retrieveChapterJobs.Any(j => j is RetrieveChaptersJob rcj && rcj.MangaId == MangaId)) + if (retrieveChapterJobs.Any(j => j is RetrieveChaptersJob rcj && rcj.MangaId == MangaId && rcj.state < JobState.Completed)) { Response.Headers.Append("Retry-After", $"{TrangaSettings.startNewJobTimeoutMs * retrieveChapterJobs.Count() * 2 / 1000:D}"); return StatusCode(Status503ServiceUnavailable, TrangaSettings.startNewJobTimeoutMs * retrieveChapterJobs.Count() * 2 / 1000);