diff --git a/controller/src/user/api.rs b/controller/src/user/api.rs index 861db83..67397d9 100644 --- a/controller/src/user/api.rs +++ b/controller/src/user/api.rs @@ -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 {},