use thiserror::Error;
#[derive(Error, Debug)]
pub enum PersistenceError {
#[error("初始化错误: {message}")]
InitError { message: String },
#[error("数据未找到: {message}")]
NotFound { message: String },
#[error("合并错误: {message}")]
MergeError { message: String },
#[error("后端({backend_type})错误: {error}")]
BackendError { backend_type: String, error: String },
#[error("通用错误: {0}")]
Generic(#[from] anyhow::Error),
}
pub type Result<T> = std::result::Result<T, PersistenceError>;
impl From<std::io::Error> for PersistenceError {
fn from(err: std::io::Error) -> Self {
PersistenceError::Generic(anyhow::Error::from(err))
}
}
impl From<sqlx::Error> for PersistenceError {
fn from(err: sqlx::Error) -> Self {
PersistenceError::Generic(anyhow::Error::from(err))
}
}
impl From<serde_json::Error> for PersistenceError {
fn from(err: serde_json::Error) -> Self {
PersistenceError::Generic(anyhow::Error::from(err))
}
}