use crate::traits::ErrorTrait;
#[derive(thiserror::Error, Debug)]
pub enum Error {
#[error(transparent)]
Any(#[from] soph_core::AnyError),
#[error(transparent)]
Container(#[from] soph_core::error::ContainerError),
#[error(transparent)]
FormRejection(#[from] axum::extract::rejection::FormRejection),
#[error(transparent)]
HttpError(#[from] axum::http::Error),
#[error(transparent)]
InvalidHeaderName(#[from] axum::http::header::InvalidHeaderName),
#[error(transparent)]
InvalidMethod(#[from] axum::http::method::InvalidMethod),
#[error(transparent)]
InvalidHeaderValue(#[from] axum::http::header::InvalidHeaderValue),
#[error(transparent)]
IO(#[from] std::io::Error),
#[cfg(feature = "request-auth")]
#[error(transparent)]
Auth(#[from] soph_auth::error::Error),
#[cfg(feature = "request-json")]
#[error(transparent)]
JsonRejection(#[from] axum::extract::rejection::JsonRejection),
#[cfg(feature = "request-multipart")]
#[error(transparent)]
MultipartRejection(#[from] axum::extract::multipart::MultipartRejection),
#[cfg(feature = "request-multipart")]
#[error(transparent)]
Multipart(#[from] axum::extract::multipart::MultipartError),
#[cfg(feature = "request-path")]
#[error(transparent)]
PathRejection(#[from] axum::extract::rejection::PathRejection),
#[cfg(feature = "request-query")]
#[error(transparent)]
QueryRejection(#[from] axum::extract::rejection::QueryRejection),
#[cfg(feature = "database")]
#[error(transparent)]
SeaOrm(#[from] sea_orm::DbErr),
#[error(transparent)]
SerdeJson(#[from] serde_json::Error),
#[cfg(feature = "response-view")]
#[error(transparent)]
Tera(#[from] tera::Error),
#[error(transparent)]
ToStr(#[from] axum::http::header::ToStrError),
#[error("Unsupported media type")]
UnsupportedMediaType,
#[cfg(feature = "request-id")]
#[error(transparent)]
Uuid(#[from] uuid::Error),
#[cfg(feature = "request-validate")]
#[error(transparent)]
Validate(#[from] validator::ValidationErrors),
}
impl ErrorTrait for Error {}