feat(project): add lifecycle list handler
zhenyi committed
Added lib/project/handler/lifecycle/list.rs lib/project/handler/lifecycle/list.rs +36 −0 View lib/project/handler/lifecycle/list.rs
@@ -0,0 +1,36 @@
1use axum::extract::{Path, State};
2use export::data::AppResponseData;
3use jwt::extractor::AuthUser;
4use uuid::Uuid;
5
6use crate::error::ProjectResult;
7use crate::features::ProjectService;
8use crate::features::lifecycle::ProjectPage;
9
10#[utoipa::path(
11 get,
12 path = "/spaces/{space_id}/projects",
13 tag = "project",
14 responses((status = 200, description = "List projects", body = AppResponseData<ProjectPage>)),
15 security(("bearer_auth" = []))
16)]
17pub(crate) async fn handler(
18 State(svc): State<ProjectService>,
19 AuthUser { claims }: AuthUser,
20 Path(space_id): Path<Uuid>,
21) -> ProjectResult<AppResponseData<ProjectPage>> {
22 let page = svc.list_projects(
23 claims.sub,
24 crate::features::lifecycle::ListProjectQuery {
25 space_id,
26 state: None,
27 lead_id: None,
28 starred_only: None,
29 q: None,
30 page: 1,
31 per_page: 20,
32 },
33 )
34 .await?;
35 Ok(AppResponseData::ok(page))
36}
No newline at end of file