use std::fmt; use crate::db::UserRef; pub type BoxedError = Box; #[derive(Debug)] pub enum UserCreationError { DomainNotFound(String), UserAlreadyExists(UserRef), Permissions, } impl fmt::Display for UserCreationError { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { Self::DomainNotFound(domain) => write!(f, "No domain {domain} to create user in"), Self::UserAlreadyExists(user) => write!(f, "User already exists: {user}"), Self::Permissions => write!(f, "You do not have permissions to create this user"), } } } impl std::error::Error for UserCreationError {} #[derive(Debug)] pub enum DomainCreationError { DomainAlreadyExists(String), InvalidDomain(String), } impl fmt::Display for DomainCreationError { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { Self::DomainAlreadyExists(domain) => { write!(f, "Cannot create domain {domain} because it already exists") } Self::InvalidDomain(domain) => write!( f, "Cannot create domain `{domain}` because it's not considered a valid domain" ), } } } impl std::error::Error for DomainCreationError {}