use thiserror::Error; #[derive(Debug, Error, PartialEq, Eq)] pub enum DomainError { #[error("not found")] NotFound, #[error("email already in use")] EmailTaken, #[error("invalid credentials")] InvalidCredentials, #[error("user is inactive")] InactiveUser, #[error("invalid or expired token")] InvalidToken, #[error("the last active admin cannot be demoted or deactivated")] LastAdmin, #[error("validation failed: {0}")] Validation(String), #[error("conflict: {0}")] Conflict(String), #[error("external service unavailable: {0}")] Unavailable(String), #[error("storage error: {0}")] Storage(String), }