server: fix paging if only notmuch results are found
This commit is contained in:
parent
8a237bf8e1
commit
b5e25eef78
@ -217,7 +217,10 @@ impl QueryRoot {
|
|||||||
|
|
||||||
let newsreader_query: Query = query.parse()?;
|
let newsreader_query: Query = query.parse()?;
|
||||||
|
|
||||||
Ok(newsreader::count(pool, &newsreader_query).await? + nm::count(nm, &query).await?)
|
let newsreader_count = newsreader::count(pool, &newsreader_query).await?;
|
||||||
|
let notmuch_count = nm::count(nm, &newsreader_query.to_notmuch()).await?;
|
||||||
|
info!("count {newsreader_query:?} newsreader count {newsreader_count} notmuch count {notmuch_count}");
|
||||||
|
Ok(newsreader_count + notmuch_count)
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn search<'ctx>(
|
async fn search<'ctx>(
|
||||||
|
|||||||
@ -37,6 +37,12 @@ pub fn make_news_tag(tag: &str) -> String {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub async fn count(pool: &PgPool, query: &Query) -> Result<usize, ServerError> {
|
pub async fn count(pool: &PgPool, query: &Query) -> Result<usize, ServerError> {
|
||||||
|
if !query.remainder.is_empty() {
|
||||||
|
// TODO: handle full text search against all sites, for now, early return if search words
|
||||||
|
// are specified.
|
||||||
|
return Ok(0);
|
||||||
|
}
|
||||||
|
|
||||||
let row = sqlx::query_file!("sql/count.sql", query.tag, query.unread_only)
|
let row = sqlx::query_file!("sql/count.sql", query.tag, query.unread_only)
|
||||||
.fetch_one(pool)
|
.fetch_one(pool)
|
||||||
.await?;
|
.await?;
|
||||||
|
|||||||
@ -50,7 +50,13 @@ pub async fn search(
|
|||||||
last: Option<i32>,
|
last: Option<i32>,
|
||||||
query: String,
|
query: String,
|
||||||
) -> Result<Vec<(i32, ThreadSummary)>, async_graphql::Error> {
|
) -> Result<Vec<(i32, ThreadSummary)>, async_graphql::Error> {
|
||||||
let (offset, limit) = compute_offset_limit(after, before, first, last);
|
let (offset, mut limit) = compute_offset_limit(after, before, first, last);
|
||||||
|
if before.is_none() {
|
||||||
|
// When searching forward, the +1 is to see if there are more pages of data available.
|
||||||
|
// Searching backwards implies there's more pages forward, because the value represented by
|
||||||
|
// `before` is on the next page.
|
||||||
|
limit = limit + 1;
|
||||||
|
}
|
||||||
Ok(nm
|
Ok(nm
|
||||||
.search(&query, offset as usize, limit as usize)?
|
.search(&query, offset as usize, limit as usize)?
|
||||||
.0
|
.0
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user