#![allow(unused_imports)]
use super::*;
pub(crate) type ApiResult<T = Value> = Result<Json<T>, ApiError>;
#[derive(Debug)]
pub(crate) struct ApiError {
pub(crate) status: StatusCode,
pub(crate) message: String,
}
impl ApiError {
pub(crate) fn bad_request(message: impl Into<String>) -> Self {
Self {
status: StatusCode::BAD_REQUEST,
message: message.into(),
}
}
pub(crate) fn internal(message: impl Into<String>) -> Self {
Self {
status: StatusCode::INTERNAL_SERVER_ERROR,
message: message.into(),
}
}
pub(crate) fn not_found(message: impl Into<String>) -> Self {
Self {
status: StatusCode::NOT_FOUND,
message: message.into(),
}
}
pub(crate) fn forbidden(message: impl Into<String>) -> Self {
Self {
status: StatusCode::FORBIDDEN,
message: message.into(),
}
}
}
impl IntoResponse for ApiError {
fn into_response(self) -> Response {
(
self.status,
Json(json!({
"error": {
"message": self.message,
}
})),
)
.into_response()
}
}