From a398225fa6e7e412b1df51d12b1f402b70dcbbd1 Mon Sep 17 00:00:00 2001 From: Froidefond Julien Date: Sat, 28 Mar 2026 08:53:08 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20nettoyer=20les=20available=5Fdownloads?= =?UTF-8?q?=20orphelins=20lors=20de=20la=20d=C3=A9tection?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Supprime les entrées available_downloads dont le series_name ne correspond plus à aucune série existante dans books, au début de chaque job de détection de téléchargements. Co-Authored-By: Claude Opus 4.6 (1M context) --- apps/api/src/download_detection.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/apps/api/src/download_detection.rs b/apps/api/src/download_detection.rs index 8d21c83..6af3ed4 100644 --- a/apps/api/src/download_detection.rs +++ b/apps/api/src/download_detection.rs @@ -446,6 +446,22 @@ pub(crate) async fn process_download_detection( .await .map_err(|e| e.to_string())?; + // Clean up available_downloads for series that no longer exist in books + sqlx::query( + r#" + DELETE FROM available_downloads + WHERE library_id = $1 + AND series_name NOT IN ( + SELECT DISTINCT COALESCE(NULLIF(series, ''), 'unclassified') + FROM books WHERE library_id = $1 + ) + "#, + ) + .bind(library_id) + .execute(pool) + .await + .map_err(|e| e.to_string())?; + let total = all_series.len() as i32; sqlx::query("UPDATE index_jobs SET total_files = $2 WHERE id = $1") .bind(job_id)