#[cfg(feature = "api-client")]
use crate::api_client::ApiClientError;
use crate::app::AppError;
use crate::dao::DaoError;
use crate::db::DbError;
use crate::env::EnvError;
use axum::extract::multipart::MultipartError;
use idworker::IdWorkerError;
use std::time::SystemTimeError;
#[derive(Debug, thiserror::Error)]
pub enum SvcError {
#[error("{0}")]
Runtime(#[from] anyhow::Error),
#[error("环境变量错误: {0}")]
GetAppEnv(#[from] EnvError),
#[error("系统时钟错误: {0}")]
SystemTime(#[from] SystemTimeError),
#[error("ID工作者错误: {0}")]
IdWorker(#[from] IdWorkerError),
#[error("APP错误: {0}")]
App(#[from] AppError),
#[error("参数校验错误 -> {0}")]
Validation(#[from] validator::ValidationError),
#[error("参数校验错误 -> {0}")]
Validations(#[from] validator::ValidationErrors),
#[error("找不到数据: {0}")]
NotFound(String),
#[error("IO错误: {0}")]
Io(#[from] std::io::Error),
#[cfg(feature = "web")]
#[error("MultipartError错误: {0}")]
MultipartError(#[from] MultipartError),
#[cfg(feature = "db")]
#[error("数据访问层错误: {0}")]
Dao(#[from] DaoError),
#[cfg(feature = "db")]
#[error("数据库连接错误: {0}")]
DbConn(#[from] DbError),
#[cfg(feature = "api-client")]
#[error("API客户端错误, {0}")]
ApiClient(#[from] ApiClientError),
}