Skip to content
Clone

feat(project): add lifecycle create handler

zhenyi committed
parent 3f3eef5 commit 8f4c307 Browse files

1 file changed

+26 −0

Added lib/project/handler/lifecycle/create.rs View lib/project/handler/lifecycle/create.rs
@@ -0,0 +1,26 @@
1use axum::extract::{Path, State};
2use export::data::{AppRequest, AppRequestData, AppResponseData};
3use jwt::extractor::AuthUser;
4use uuid::Uuid;
5
6use crate::error::ProjectResult;
7use crate::features::ProjectService;
8use crate::features::lifecycle::{CreateProjectCmd, ProjectView};
9
10#[utoipa::path(
11 post,
12 path = "/spaces/{space_id}/projects",
13 tag = "project",
14 request_body = AppRequestData<CreateProjectCmd>,
15 responses((status = 201, description = "Create a project", body = AppResponseData<ProjectView>)),
16 security(("bearer_auth" = []))
17)]
18pub(crate) async fn handler(
19 State(svc): State<ProjectService>,
20 AuthUser { claims }: AuthUser,
21 Path(_space_id): Path<Uuid>,
22 input: AppRequest<CreateProjectCmd>,
23) -> ProjectResult<AppResponseData<ProjectView>> {
24 let view = svc.create_project(claims.sub, input.into_inner()).await?;
25 Ok(AppResponseData::ok(view).with_code(201))
26}
No newline at end of file