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<Body>, 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);
        }
    }
}

