summaryrefslogtreecommitdiffstats
path: root/src/routes/user.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/routes/user.rs')
-rw-r--r--src/routes/user.rs25
1 files changed, 21 insertions, 4 deletions
diff --git a/src/routes/user.rs b/src/routes/user.rs
index 3dfb73a..4ac994c 100644
--- a/src/routes/user.rs
+++ b/src/routes/user.rs
@@ -3,7 +3,13 @@ use crate::models::{
auth::Claims,
user::{User, UserCreate, UserList},
};
-use axum::{extract::Path, routing::get, Json, Router};
+use crate::pagination::Pagination;
+use axum::{
+ extract::{Path, Query},
+ routing::get,
+ Json, Router,
+};
+use serde::Serialize;
/// Create routes for `/v1/users/` namespace
pub fn create_route() -> Router {
@@ -12,11 +18,22 @@ pub fn create_route() -> Router {
.route("/:id", get(get_user))
}
+#[derive(Serialize)]
+struct UserPagination {
+ count: i64,
+ results: Vec<UserList>,
+}
+
/// List users. Checks Authorization token
-async fn list_users(_: Claims) -> Result<Json<Vec<UserList>>, AppError> {
- let users = User::list().await?;
+async fn list_users(
+ _: Claims,
+ pagination: Query<Pagination>,
+) -> Result<Json<UserPagination>, AppError> {
+ let page = pagination.0.page.unwrap_or_default();
+ let results = User::list(page).await?;
+ let count = User::count().await?;
- Ok(Json(users))
+ Ok(Json(UserPagination { count, results }))
}
/// Create an user. Checks Authorization token