1use thiserror::Error;
2
3pub use signer_core::{Result, SignerError};
5
6#[derive(Debug, Error)]
8pub enum DaemonError {
9 #[error("数据库操作失败: {0}")]
11 Database(#[from] sea_orm::DbErr),
12
13 #[error("网络请求失败: {0}")]
15 Network(#[from] reqwest::Error),
16
17 #[error("IO 操作失败: {0}")]
19 Io(#[from] std::io::Error),
20
21 #[error("JSON 序列化失败: {0}")]
23 Json(#[from] serde_json::Error),
24
25 #[error("Base64 解码失败: {0}")]
27 Base64(#[from] base64::DecodeError),
28
29 #[error("UTF8 转换失败: {0}")]
31 Utf8(#[from] std::string::FromUtf8Error),
32
33 #[error("事件源客户端错误: {0}")]
35 EventSource(String),
36
37 #[error(transparent)]
39 Signer(#[from] SignerError),
40}
41
42pub type DaemonResult<T> = std::result::Result<T, DaemonError>;
44
45impl From<DaemonError> for SignerError {
47 fn from(err: DaemonError) -> Self {
48 match err {
49 DaemonError::Signer(e) => e,
50 _ => SignerError::Msg(err.to_string()),
51 }
52 }
53}
54
55impl From<eventsource_client::Error> for DaemonError {
57 fn from(err: eventsource_client::Error) -> Self {
58 DaemonError::EventSource(err.to_string())
59 }
60}