use std::sync::Mutex; use crate::models::client::*; use actix_web::{web, get, post, patch, delete, Responder, HttpResponse}; use crate::State; #[get("/")] pub async fn get_clients(state: web::Data>) -> impl Responder { HttpResponse::Ok().json(state.lock().unwrap().client_repository.read_all().await.unwrap()) } #[get("/{id}")] pub async fn get_client(state: web::Data>, path: web::Path<(u32, )>) -> impl Responder { HttpResponse::Ok().json(state.lock().unwrap().client_repository.read(path.into_inner().0).await.unwrap()) } #[post("/")] pub async fn create_client(state: web::Data>, json: web::Json) -> impl Responder { HttpResponse::Ok().json(state.lock().unwrap().client_repository.create(json.0).await.unwrap()) } #[patch("/{id}")] pub async fn update_client(state: web::Data>, json: web::Json, path: web::Path<(u32, )>) -> impl Responder { HttpResponse::Ok().json(state.lock().unwrap().client_repository.update(path.into_inner().0, json.0).await.unwrap()) } #[delete("/{id}")] pub async fn delete_client(state: web::Data>, path: web::Path<(u32, )>) -> impl Responder { HttpResponse::Ok().json(state.lock().unwrap().client_repository.delete(path.into_inner().0).await.unwrap()) }