Refactored code, working with database data

This commit is contained in:
2023-09-08 08:59:21 -04:00
parent 8c2a6368ad
commit 17b76ade1f
19 changed files with 211 additions and 379 deletions

View File

@@ -1,67 +1,61 @@
use crate::airports::{Airport, Airports};
use crate::error_handler::CustomError;
use actix_web::{delete, get, post, put, web, HttpResponse};
use log::error;
use serde_json::json;
#[get("/airports")]
async fn find_all() -> Result<HttpResponse, CustomError> {
let airports = match web::block(|| Airports::find_all()).await.unwrap() {
Ok(a) => a,
async fn find_all() -> HttpResponse {
match web::block(|| Airports::find_all()).await.unwrap() {
Ok(a) => HttpResponse::Ok().json(a),
Err(err) => {
error!("{}", err);
return Err(err);
HttpResponse::InternalServerError().finish()
}
};
Ok(HttpResponse::Ok().json(airports))
}
}
#[get("/airports/{id}")]
async fn find(id: web::Path<i32>) -> Result<HttpResponse, CustomError> {
let airport = match Airports::find(id.into_inner()) {
Ok(a) => a,
async fn find(id: web::Path<i32>) -> HttpResponse {
match Airports::find(id.into_inner()) {
Ok(a) => HttpResponse::Ok().json(a),
Err(err) => {
error!("{}", err);
return Err(err);
HttpResponse::InternalServerError().finish()
}
};
Ok(HttpResponse::Ok().json(airport))
}
}
#[post("/airports")]
async fn create(airport: web::Json<Airport>) -> Result<HttpResponse, CustomError> {
let airport = match Airports::create(airport.into_inner()) {
Ok(a) => a,
async fn create(airport: web::Json<Airport>) -> HttpResponse {
match Airports::create(airport.into_inner()) {
Ok(a) => HttpResponse::Ok().json(a),
Err(err) => {
error!("{}", err);
return Err(err);
HttpResponse::InternalServerError().finish()
}
};
Ok(HttpResponse::Ok().json(airport))
}
}
#[put("/airports/{id}")]
async fn update(id: web::Path<i32>, airport: web::Json<Airport>) -> Result<HttpResponse, CustomError> {
let airport = match Airports::update(id.into_inner(), airport.into_inner()) {
Ok(a) => a,
async fn update(id: web::Path<i32>, airport: web::Json<Airport>) -> HttpResponse {
match Airports::update(id.into_inner(), airport.into_inner()) {
Ok(a) => HttpResponse::Ok().json(a),
Err(err) => {
error!("{}", err);
return Err(err);
HttpResponse::InternalServerError().finish()
}
};
Ok(HttpResponse::Ok().json(airport))
}
}
#[delete("/airports/{id}")]
async fn delete(id: web::Path<i32>) -> Result<HttpResponse, CustomError> {
let deleted_airport = match Airports::delete(id.into_inner()) {
Ok(a) => a,
async fn delete(id: web::Path<i32>) -> HttpResponse {
match Airports::delete(id.into_inner()) {
Ok(a) => HttpResponse::Ok().json(json!({ "deleted": a })),
Err(err) => {
error!("{}", err);
return Err(err);
HttpResponse::InternalServerError().finish()
}
};
Ok(HttpResponse::Ok().json(json!({ "deleted": deleted_airport })))
}
}
pub fn init_routes(config: &mut web::ServiceConfig) {