2ae9196
ZhenYi
feat(lib/git): add HTTP handler tree with routes and errors across analysis, archives, blobs, branches, commits, conflicts, content, diffs, hooks, lfs, logs, maintenance, packs, patches, pipelines, refs, remotes, repos, signatures, submodules, tags, trees
2ae9196
use std::fmt;
use sea_orm::DbErr;
#[derive(Debug)]
pub enum ExportError {
Database(DbErr),
Redis(redis::RedisError),
Storage(storage::StorageError),
MailBaby(mailbaby::Error),
InvalidConfig(String),
Connection(String),
Disabled,
Unsupported(String),
}
impl fmt::Display for ExportError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
ExportError::Database(err) => write!(f, "database error: {err}"),
ExportError::Redis(err) => write!(f, "redis error: {err}"),
ExportError::Storage(err) => write!(f, "storage error: {err}"),
ExportError::MailBaby(err) => write!(f, "mailbaby error: {err}"),
ExportError::InvalidConfig(msg) => write!(f, "invalid config: {msg}"),
ExportError::Connection(msg) => write!(f, "connection error: {msg}"),
ExportError::Disabled => write!(f, "email service is disabled"),
ExportError::Unsupported(msg) => write!(f, "unsupported email operation: {msg}"),
}
}
}
impl std::error::Error for ExportError {
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
match self {
ExportError::Database(err) => Some(err),
ExportError::Redis(err) => Some(err),
ExportError::Storage(err) => Some(err),
ExportError::MailBaby(err) => Some(err),
_ => None,
}
}
}
impl From<DbErr> for ExportError {
fn from(err: DbErr) -> Self {
ExportError::Database(err)
}
}
impl From<redis::RedisError> for ExportError {
fn from(err: redis::RedisError) -> Self {
ExportError::Redis(err)
}
}
impl From<storage::StorageError> for ExportError {
fn from(err: storage::StorageError) -> Self {
ExportError::Storage(err)
}
}
impl From<mailbaby::Error> for ExportError {
fn from(err: mailbaby::Error) -> Self {
ExportError::MailBaby(err)
}
}