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) }