Skip to content
Clone
eeff292
22 lines 774 B Rust
use crate::errors::SpaceError;
pub(crate) fn reason_error(reason: &'static str, permission: &str) -> SpaceError {
match reason {
"org_inactive" => SpaceError::SpaceInactive,
"member_banned" => SpaceError::SpaceMemberBanned,
"not_member" | "member_left" => SpaceError::Forbidden,
_ => SpaceError::ScopeInsufficient {
required: permission.to_owned(),
},
}
}
pub(crate) fn map_insert_conflict(error: sea_orm::DbErr) -> SpaceError {
if let sea_orm::DbErr::Query(sea_orm::RuntimeErr::SqlxError(source)) = &error
&& let Some(code) = source.as_database_error().and_then(|db| db.code())
&& code.as_ref() == "23505"
{
return SpaceError::SpaceSlugTaken;
}
SpaceError::from(error)
}