show accurate page counts and buttons for quote search results
This commit is contained in:
@@ -174,6 +174,18 @@ impl Quote {
|
||||
Ok(quotes)
|
||||
}
|
||||
|
||||
pub async fn search_query_count(
|
||||
conn: &mut PgConnection,
|
||||
query: &str,
|
||||
) -> Result<i64, QuoteError> {
|
||||
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,
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user