Error handling
This commit is contained in:
@ -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, ¶ms.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, ¶ms.folder_name, &pool)
|
||||
db::folder::insert(params.parent_folder_id, ¶ms.folder_name, &pool)
|
||||
.await
|
||||
.handle_internal()?;
|
||||
|
||||
Ok(Json(id))
|
||||
.handle_internal("Error creating the folder")
|
||||
.map(Json)
|
||||
}
|
||||
|
Reference in New Issue
Block a user