show accurate page counts and buttons for quote search results
This commit is contained in:
@@ -174,6 +174,18 @@ impl Quote {
|
|||||||
Ok(quotes)
|
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(
|
pub async fn get_by_search_query(
|
||||||
conn: &mut PgConnection,
|
conn: &mut PgConnection,
|
||||||
query: &str,
|
query: &str,
|
||||||
|
|||||||
@@ -45,7 +45,10 @@ pub async fn page(
|
|||||||
"" => Quote::get_chronological_offset(&mut *conn, offset, per_page).await?,
|
"" => Quote::get_chronological_offset(&mut *conn, offset, per_page).await?,
|
||||||
_ => Quote::get_by_search_query(&mut *conn, search, 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 total_pages = (total_quotes as f64 / per_page as f64).ceil() as i64;
|
||||||
|
|
||||||
let s_qs = if search.is_empty() {
|
let s_qs = if search.is_empty() {
|
||||||
|
|||||||
Reference in New Issue
Block a user