Error handling

This commit is contained in:
2024-08-05 23:32:16 +03:00
parent 8a4e2dc467
commit 9f76228ebe
21 changed files with 209 additions and 117 deletions

View File

@ -10,22 +10,24 @@ pub async fn create(
State(pool): State<Pool>,
claims: Claims,
Json(params): Json<Params>,
) -> Result<Json<Uuid>, StatusCode> {
) -> GeneralResult<Json<Uuid>> {
db::folder::get_permissions(params.parent_folder_id, claims.user_id, &pool)
.await
.handle_internal()?
.map_err(GeneralError::permissions)?
.can_write_guard()?;
let exists = db::folder::name_exists(params.parent_folder_id, &params.folder_name, &pool)
.await
.handle_internal()?;
.handle_internal("Error getting existing names")?;
if exists {
return Err(StatusCode::CONFLICT);
return Err(GeneralError::message(
StatusCode::CONFLICT,
"Name already taken",
));
}
let id = db::folder::insert(params.parent_folder_id, &params.folder_name, &pool)
db::folder::insert(params.parent_folder_id, &params.folder_name, &pool)
.await
.handle_internal()?;
Ok(Json(id))
.handle_internal("Error creating the folder")
.map(Json)
}