use super::types::AccountStatus;
#[derive(Debug, thiserror::Error)]
#[non_exhaustive]
pub enum AccountError {
#[error("account not found: {0}")]
NotFound(String),
#[error("account already exists with email: {0}")]
AlreadyExists(String),
#[error("invalid status transition from {from} to {to}")]
InvalidTransition {
from: AccountStatus,
to: AccountStatus,
},
#[error("invalid credentials")]
InvalidCredentials,
#[error("account is {status}: {reason}")]
AccountInactive {
status: AccountStatus,
reason: String,
},
#[error("validation error: {0}")]
Validation(String),
#[error("storage error: {0}")]
Storage(String),
#[error("invalid account ID: {0}")]
InvalidId(String),
}