From 914d8a48c118d77b579cd92769164995aa95cc5f Mon Sep 17 00:00:00 2001 From: jmanczak Date: Sun, 26 Apr 2026 23:58:19 +0200 Subject: [PATCH] show accurate page counts and buttons for quote search results --- src/quotes/mod.rs | 12 ++++++++++++ src/web/pages/quotes.rs | 5 ++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/quotes/mod.rs b/src/quotes/mod.rs index 234286d..4c0fc72 100644 --- a/src/quotes/mod.rs +++ b/src/quotes/mod.rs @@ -174,6 +174,18 @@ impl Quote { Ok(quotes) } + pub async fn search_query_count( + conn: &mut PgConnection, + query: &str, + ) -> Result { + let count: i64 = + sqlx::query_scalar("SELECT COUNT(*) FROM quotes WHERE fts ILIKE '%' || $1 || '%'") + .bind(query) + .fetch_one(&mut *conn) + .await?; + Ok(count) + } + pub async fn get_by_search_query( conn: &mut PgConnection, query: &str, diff --git a/src/web/pages/quotes.rs b/src/web/pages/quotes.rs index 861d661..b94c7a2 100644 --- a/src/web/pages/quotes.rs +++ b/src/web/pages/quotes.rs @@ -45,7 +45,10 @@ pub async fn page( "" => Quote::get_chronological_offset(&mut *conn, offset, per_page).await?, _ => Quote::get_by_search_query(&mut *conn, search, offset, per_page).await?, }; - let total_quotes = Quote::total_count(&mut *conn).await?; + let total_quotes = match search { + "" => Quote::total_count(&mut *conn).await?, + _ => Quote::search_query_count(&mut *conn, search).await?, + }; let total_pages = (total_quotes as f64 / per_page as f64).ceil() as i64; let s_qs = if search.is_empty() {