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, AuthUser { claims }: AuthUser, Query(q): Query, ) -> SpaceResult> { 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)) }