mod client; mod server; pub use client::ClientError; pub use server::ServerError; use argon2::password_hash::Error as PasswordHashError; use axum::extract::rejection::JsonRejection; use axum_extra::typed_header::TypedHeaderRejection; use sea_orm::DbErr; pub enum ApiError { Client(ClientError), Server(ServerError), } impl From for ApiError { fn from(value: ClientError) -> Self { Self::Client(value) } } impl From for ApiError { fn from(value: ServerError) -> Self { Self::Server(value) } } impl From for ApiError { fn from(value: JsonRejection) -> Self { Self::Client(ClientError::BadJsonBody(value.body_text())) } } impl From for ApiError { fn from(value: TypedHeaderRejection) -> Self { Self::Client(ClientError::BadAuthTokenHeader(value.to_string())) } } impl From for ApiError { fn from(value: DbErr) -> Self { Self::Server(ServerError::Database(value.to_string())) } } impl From for ApiError { fn from(value: PasswordHashError) -> Self { Self::Server(ServerError::PasswordHash(value.to_string())) } }