From e913a92411646e11ce66458b0a7660ab0eb5d13a Mon Sep 17 00:00:00 2001 From: Froidefond Julien Date: Sat, 28 Mar 2026 08:49:00 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20tri=20"derniers=20ajout=C3=A9s"=20utilis?= =?UTF-8?q?e=20created=5Fat=20au=20lieu=20de=20updated=5Fat?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le tri par date d'ajout utilisait updated_at qui est écrasé à chaque rescan de l'indexer, empêchant les livres/séries récemment ajoutés de remonter en premier. Utilise maintenant created_at qui reflète la vraie date d'ajout. Co-Authored-By: Claude Opus 4.6 (1M context) --- apps/api/src/books.rs | 2 +- apps/api/src/series.rs | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/api/src/books.rs b/apps/api/src/books.rs index 31bc0f8..d9d9a52 100644 --- a/apps/api/src/books.rs +++ b/apps/api/src/books.rs @@ -180,7 +180,7 @@ pub async fn list_books( ); let order_clause = if query.sort.as_deref() == Some("latest") { - "b.updated_at DESC".to_string() + "b.created_at DESC".to_string() } else { "b.volume NULLS LAST, REGEXP_REPLACE(LOWER(b.title), '[0-9].*$', ''), COALESCE((REGEXP_MATCH(LOWER(b.title), '\\d+'))[1]::int, 0), b.title ASC".to_string() }; diff --git a/apps/api/src/series.rs b/apps/api/src/series.rs index 5a928be..f9395d3 100644 --- a/apps/api/src/series.rs +++ b/apps/api/src/series.rs @@ -458,7 +458,7 @@ pub async fn list_all_series( ); let series_order_clause = if query.sort.as_deref() == Some("latest") { - "sc.latest_updated_at DESC".to_string() + "sc.latest_created_at DESC".to_string() } else { "REGEXP_REPLACE(LOWER(sc.name), '[0-9].*$', ''), COALESCE((REGEXP_MATCH(LOWER(sc.name), '\\d+'))[1]::int, 0), sc.name ASC".to_string() }; @@ -470,7 +470,7 @@ pub async fn list_all_series( COALESCE(NULLIF(series, ''), 'unclassified') as name, id, library_id, - updated_at, + created_at, ROW_NUMBER() OVER ( PARTITION BY COALESCE(NULLIF(series, ''), 'unclassified') ORDER BY @@ -488,7 +488,7 @@ pub async fn list_all_series( sb.library_id, COUNT(*) as book_count, COUNT(brp.book_id) FILTER (WHERE brp.status = 'read') as books_read_count, - MAX(sb.updated_at) as latest_updated_at + MAX(sb.created_at) as latest_created_at FROM sorted_books sb LEFT JOIN book_reading_progress brp ON brp.book_id = sb.id AND ${user_id_p}::uuid IS NOT NULL AND brp.user_id = ${user_id_p} GROUP BY sb.name, sb.library_id