Skip to content
Clone
a06673b
26 lines 774 B Rust
use axum::Json;
use axum::extract::State;
use axum::http::StatusCode;
use jwt::extractor::AuthUser;
use crate::error::RepoResult;
use crate::features::RepoService;
use crate::features::lifecycle::CreateRepoOption;
use crate::features::lifecycle::RepoView;
#[utoipa::path(
post,
path = "/repos",
tag = "repo",
request_body = CreateRepoOption,
responses((status = 201, description = "Create a repository", body = RepoView)),
security(("bearer_auth" = []))
)]
pub(crate) async fn handler(
State(svc): State<RepoService>,
AuthUser { claims }: AuthUser,
Json(input): Json<CreateRepoOption>,
) -> RepoResult<(StatusCode, Json<RepoView>)> {
let view = svc.create_repo(claims.sub, input).await?;
Ok((StatusCode::CREATED, Json(view)))
}