crab_rocket_role 0.1.0

Role package for the crab rocket project
Documentation
use rocket::{delete, get, patch, post, serde::json::Json};
use serde_json::json;

use crate::models::role::PatchRole;
use crate::{controllers::role_controller, models::role::NewRole};

#[post("/role", data = "<role>")]
pub fn insert_role(role: Json<NewRole>) -> Json<serde_json::Value> {
    let (status, message, role) = role_controller::insert_role_controller(&mut role.clone());
    let response = json!(
        {
            "status": status,
            "message": message,
            "data": role
        }
    );
    Json(serde_json::from_value(response).unwrap())
}

#[get("/role")]
pub fn get_all_roles() -> Json<serde_json::Value> {
    let (status, message, roles) = role_controller::get_all_roles_controller();
    let response = json!(
        {
            "status": status,
            "message": message,
            "data": roles
        }
    );
    Json(serde_json::from_value(response).unwrap())
}

#[delete("/role/<id>")]
pub fn delete_role_by_id(id: i32) -> Json<serde_json::Value> {
    let (code, message, deleted_role) = role_controller::delete_role_by_id_controller(id);
    let response = json!({
        "code": code,
        "message": message,
        "data": deleted_role
    });
    Json(response)
}

#[get("/role/<id>")]
pub fn get_role_by_id(id: i32) -> Json<serde_json::Value> {
    let (code, message, role) = role_controller::get_role_by_id_controller(id);
    let response = serde_json::from_value(json!({
        "code":code,
        "message":message,
        "data":role
    }))
    .unwrap();
    Json(response)
}

#[patch("/role/<id>", data = "<role>")]
pub fn update_role_by_id(id: i32, role: Json<PatchRole>) -> Json<serde_json::Value> {
    let (code, message, updated_role) = role_controller::update_role_by_id_controller(id, &role);
    let response = serde_json::from_value(json!({
        "code":code,
        "message":message,
        "data":updated_role
    }))
    .unwrap();
    Json(response)
}