33 lines
751 B
Rust
33 lines
751 B
Rust
use axum::response::IntoResponse;
|
|
use sea_orm::DbErr;
|
|
use tracing::error;
|
|
|
|
use crate::errors::service_error::ServiceError;
|
|
|
|
#[derive(Debug)]
|
|
pub enum ApiError {
|
|
ServiceError(ServiceError),
|
|
}
|
|
|
|
impl From<ServiceError> for ApiError {
|
|
fn from(err: ServiceError) -> Self {
|
|
error!("Service error occurred: {:?}", err);
|
|
ApiError::ServiceError(err)
|
|
}
|
|
}
|
|
|
|
impl From<DbErr> for ApiError {
|
|
fn from(err: DbErr) -> Self {
|
|
ServiceError::from(err).into()
|
|
}
|
|
}
|
|
|
|
impl IntoResponse for ApiError {
|
|
fn into_response(self) -> axum::response::Response {
|
|
error!("API error occurred: {:?}", self);
|
|
match self {
|
|
ApiError::ServiceError(service_error) => service_error.into_response(),
|
|
}
|
|
}
|
|
}
|