signer-daemon 0.3.2

Signer daemon package.
Documentation
use thiserror::Error;

// 复用 signer-core 中的错误类型与统一结果类型
pub use signer_core::{Result, SignerError};

/// signer-daemon 特有的错误类型扩展
#[derive(Debug, Error)]
pub enum DaemonError {
    /// 数据库操作错误
    #[error("数据库操作失败: {0}")]
    Database(#[from] sea_orm::DbErr),

    /// 网络请求错误
    #[error("网络请求失败: {0}")]
    Network(#[from] reqwest::Error),

    /// IO 操作错误
    #[error("IO 操作失败: {0}")]
    Io(#[from] std::io::Error),

    /// JSON 序列化错误
    #[error("JSON 序列化失败: {0}")]
    Json(#[from] serde_json::Error),

    /// Base64 解码错误
    #[error("Base64 解码失败: {0}")]
    Base64(#[from] base64::DecodeError),

    /// UTF8 转换错误
    #[error("UTF8 转换失败: {0}")]
    Utf8(#[from] std::string::FromUtf8Error),

    /// 事件源客户端错误
    #[error("事件源客户端错误: {0}")]
    EventSource(String),

    /// 通用 Signer 错误
    #[error(transparent)]
    Signer(#[from] SignerError),
}

/// 统一的结果类型,使用 DaemonError
pub type DaemonResult<T> = std::result::Result<T, DaemonError>;

/// 为 SignerError 添加从 DaemonError 的转换
impl From<DaemonError> for SignerError {
    fn from(err: DaemonError) -> Self {
        match err {
            DaemonError::Signer(e) => e,
            _ => SignerError::Msg(err.to_string()),
        }
    }
}

/// 为 eventsource_client::Error 添加转换实现
impl From<eventsource_client::Error> for DaemonError {
    fn from(err: eventsource_client::Error) -> Self {
        DaemonError::EventSource(err.to_string())
    }
}