59 lines
2.5 KiB
Rust
59 lines
2.5 KiB
Rust
|
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_owners(state: web::Data<Mutex<State>>) -> impl Responder {
|
||
|
match state.lock() {
|
||
|
Ok(guard) => match guard.owner_repository.read_all().await {
|
||
|
Ok(result) => HttpResponse::Ok().json(result),
|
||
|
Err(error) => HttpResponse::InternalServerError().json(error.to_string())
|
||
|
},
|
||
|
Err(error) => HttpResponse::InternalServerError().json(error.to_string())
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#[get("/{id}")]
|
||
|
pub async fn get_owner(state: web::Data<Mutex<State>>, path: web::Path<(u32, )>) -> impl Responder {
|
||
|
match state.lock() {
|
||
|
Ok(guard) => match guard.owner_repository.read(path.into_inner().0).await {
|
||
|
Ok(result) => HttpResponse::Ok().json(result),
|
||
|
Err(error) => HttpResponse::InternalServerError().json(error.to_string())
|
||
|
},
|
||
|
Err(error) => HttpResponse::InternalServerError().json(error.to_string())
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#[post("/")]
|
||
|
pub async fn create_owner(state: web::Data<Mutex<State>>, json: web::Json<BindingClient>) -> impl Responder {
|
||
|
match state.lock() {
|
||
|
Ok(guard) => match guard.owner_repository.create(json.0).await {
|
||
|
Ok(result) => HttpResponse::Ok().json(result),
|
||
|
Err(error) => HttpResponse::InternalServerError().json(error.to_string())
|
||
|
},
|
||
|
Err(error) => HttpResponse::InternalServerError().json(error.to_string())
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#[patch("/{id}")]
|
||
|
pub async fn update_owner(state: web::Data<Mutex<State>>, json: web::Json<BindingClient>, path: web::Path<(u32, )>) -> impl Responder {
|
||
|
match state.lock() {
|
||
|
Ok(guard) => match guard.owner_repository.update(path.into_inner().0, json.0).await {
|
||
|
Ok(result) => HttpResponse::Ok().json(result),
|
||
|
Err(error) => HttpResponse::InternalServerError().json(error.to_string())
|
||
|
},
|
||
|
Err(error) => HttpResponse::InternalServerError().json(error.to_string())
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#[delete("/{id}")]
|
||
|
pub async fn delete_owner(state: web::Data<Mutex<State>>, path: web::Path<(u32, )>) -> impl Responder {
|
||
|
match state.lock() {
|
||
|
Ok(guard) => match guard.owner_repository.delete(path.into_inner().0).await {
|
||
|
Ok(result) => HttpResponse::Ok().json(result),
|
||
|
Err(error) => HttpResponse::InternalServerError().json(error.to_string())
|
||
|
},
|
||
|
Err(error) => HttpResponse::InternalServerError().json(error.to_string())
|
||
|
}
|
||
|
}
|