use axum::{
http::StatusCode,
response::{IntoResponse, Json},
};
use serde::Serialize;
#[derive(Serialize)]
struct ApiResponse<T: Serialize> {
status: &'static str,
#[serde(skip_serializing_if = "Option::is_none")]
data: Option<T>,
#[serde(skip_serializing_if = "Option::is_none")]
message: Option<String>,
}
pub fn success<T: Serialize>(data: T) -> impl IntoResponse {
let response = ApiResponse {
status: "success",
data: Some(data),
message: None,
};
(StatusCode::OK, Json(response))
}
pub fn error(status_code: StatusCode, message: String) -> impl IntoResponse {
let response = ApiResponse::<()> {
status: "error",
data: None,
message: Some(message),
};
(status_code, Json(response))
}