Skip to content
Clone
a06673b
18 lines 768 B Rust
use axum::Json;
use axum::extract::{Query, State};
use jwt::extractor::AuthUser;
use crate::error::SpaceResult;
use crate::features::SpaceService;
use crate::features::spaces::SpacePage;
use crate::handler::query::SpaceListQuery;
#[utoipa::path(get, path = "/spaces", tag = "space", params(SpaceListQuery), responses((status = 200, description = "List spaces owned by the caller", body = SpacePage)), security(("bearer_auth" = [])))]
pub(crate) async fn handler(
State(svc): State<SpaceService>,
AuthUser { claims }: AuthUser,
Query(q): Query<SpaceListQuery>,
) -> SpaceResult<Json<SpacePage>> {
let (limit, offset) = (q.limit.unwrap_or(0), q.offset.unwrap_or(0));
let page = svc.list_spaces(claims.sub, limit, offset).await?;
Ok(Json(page))
}