use thiserror::Error;
pub use signer_core::{Result, SignerError};
#[derive(Debug, Error)]
pub enum DaemonError {
#[error("数据库操作失败: {0}")]
Database(#[from] sea_orm::DbErr),
#[error("网络请求失败: {0}")]
Network(#[from] reqwest::Error),
#[error("IO 操作失败: {0}")]
Io(#[from] std::io::Error),
#[error("JSON 序列化失败: {0}")]
Json(#[from] serde_json::Error),
#[error("Base64 解码失败: {0}")]
Base64(#[from] base64::DecodeError),
#[error("UTF8 转换失败: {0}")]
Utf8(#[from] std::string::FromUtf8Error),
#[error("事件源客户端错误: {0}")]
EventSource(String),
#[error(transparent)]
Signer(#[from] SignerError),
}
pub type DaemonResult<T> = std::result::Result<T, DaemonError>;
impl From<DaemonError> for SignerError {
fn from(err: DaemonError) -> Self {
match err {
DaemonError::Signer(e) => e,
_ => SignerError::Msg(err.to_string()),
}
}
}
impl From<eventsource_client::Error> for DaemonError {
fn from(err: eventsource_client::Error) -> Self {
DaemonError::EventSource(err.to_string())
}
}