generated from Patagia/template-nix
Compare commits
1 commit
afb70856cd
...
d3460ecbab
Author | SHA1 | Date | |
---|---|---|---|
d3460ecbab |
1 changed files with 34 additions and 18 deletions
|
@ -82,26 +82,42 @@ async fn list_users(
|
|||
let limit = rqctx.page_limit(&pag_params)?.get() as usize;
|
||||
let pg = rqctx.context().pg_pool.to_owned();
|
||||
|
||||
let q = match &pag_params.page {
|
||||
WhichPage::First(..) => None,
|
||||
WhichPage::Next(UserPage { user_id: last_seen }) => Some(last_seen),
|
||||
let users = match &pag_params.page {
|
||||
WhichPage::First(..) => {
|
||||
tracing::debug!("Listing users. First page");
|
||||
sqlx::query!(r#"SELECT * FROM users ORDER BY id LIMIT $1"#, limit as i64)
|
||||
.fetch_all(&pg)
|
||||
.await
|
||||
.map_err(|e| HttpError::for_internal_error(format!("Error: {}", e)))?
|
||||
.into_iter()
|
||||
.map(|rec| User {
|
||||
id: rec.id,
|
||||
name: rec.name,
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
WhichPage::Next(UserPage { user_id: last_seen }) => {
|
||||
tracing::debug!(
|
||||
last_seen = last_seen.to_string(),
|
||||
"Listing users. Next page"
|
||||
);
|
||||
sqlx::query!(
|
||||
r#"SELECT * FROM users WHERE id > $1 ORDER BY id LIMIT $2"#,
|
||||
last_seen,
|
||||
limit as i64
|
||||
)
|
||||
.fetch_all(&pg)
|
||||
.await
|
||||
.map_err(|e| HttpError::for_internal_error(format!("Error: {}", e)))?
|
||||
.into_iter()
|
||||
.map(|rec| User {
|
||||
id: rec.id,
|
||||
name: rec.name,
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
};
|
||||
|
||||
let users = sqlx::query!(
|
||||
r#"SELECT * FROM users WHERE id > coalesce($1, '00000000-0000-0000-0000-000000000000'::UUID) ORDER BY id LIMIT $2"#,
|
||||
q,
|
||||
limit as i64
|
||||
)
|
||||
.fetch_all(&pg)
|
||||
.await
|
||||
.map_err(|e| HttpError::for_internal_error(format!("Error: {}", e)))?
|
||||
.into_iter()
|
||||
.map(|rec| User {
|
||||
id: rec.id,
|
||||
name: rec.name,
|
||||
})
|
||||
.collect();
|
||||
|
||||
Ok(HttpResponseOk(ResultsPage::new(
|
||||
users,
|
||||
&EmptyScanParams {},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue