use axum::http::StatusCode;
use axum::response::{IntoResponse, Response};
use axum::Json;
use serde::Serialize;
#[derive(Serialize)]
pub struct ErrorResponse {
pub error: String,
pub code: String,
}
pub struct AppError {
pub status: StatusCode,
pub error: String,
pub code: String,
}
impl IntoResponse for AppError {
fn into_response(self) -> Response {
let body = ErrorResponse {
error: self.error,
code: self.code,
};
(self.status, Json(body)).into_response()
}
}
pub async fn fallback_handler() -> AppError {
AppError {
status: StatusCode::NOT_FOUND,
error: "Not found".into(),
code: "not_found".into(),
}
}