use mysql_async::error::ServerError; use hyper::{Body, Response, StatusCode}; use serde::Serialize; use serde_json::to_string as json; #[derive(Serialize)] struct GenericErrData { status: u16, message: &'static str, note: &'static str, } pub fn db_err_response_body(response: &mut Response, err: ServerError) { *response.status_mut() = StatusCode::INTERNAL_SERVER_ERROR; match err.code { // Duplicate unique value was (tried to be) inserted 1062 => { let s = json(&GenericErrData { status: 1062, message: "Duplicate key was inserted and failed", note: "Check parameters given" }).unwrap(); *response.body_mut() = Body::from(s); }, // Generic errors _ => { let s = json(&GenericErrData{ status: 500, message: "Generic Backend error", note:"" }).unwrap(); *response.body_mut() = Body::from(s); } } }