Working on passing bounds to database airports query

This commit is contained in:
2023-09-09 22:46:20 -04:00
parent c9699c16c3
commit 612d168c05
5 changed files with 155 additions and 113 deletions

View File

@@ -1,4 +1,4 @@
use crate::airports::{Airport, Airports};
use crate::airports::{Airport, Airports, Bounds, LatLng};
use actix_web::{delete, get, post, put, web, HttpResponse, HttpRequest};
use log::error;
use serde::{Serialize, Deserialize};
@@ -6,64 +6,74 @@ use serde_json::json;
#[derive(Debug, Serialize, Deserialize)]
struct FindAllParams {
limit: i32,
page: i32
ne_lat: f32,
ne_lon: f32,
sw_lat: f32,
sw_lon: f32,
limit: i32,
page: i32
}
#[get("/airports")]
async fn find_all(req: HttpRequest) -> HttpResponse {
let params = web::Query::<FindAllParams>::from_query(req.query_string()).unwrap();
match web::block(move || Airports::find_all(params.limit, params.page)).await.unwrap() {
Ok(a) => HttpResponse::Ok().json(a),
Err(err) => {
error!("{}", err);
HttpResponse::InternalServerError().finish()
}
let params = web::Query::<FindAllParams>::from_query(req.query_string()).unwrap();
let bounds = Bounds {
north_east: LatLng { lat: params.ne_lat, lon: params.ne_lon },
south_west: LatLng { lat: params.sw_lat, lon: params.sw_lon }
};
match web::block(move || Airports::find_all(bounds, params.limit, params.page)).await.unwrap() {
Ok(a) => HttpResponse::Ok().json(a),
Err(err) => {
error!("{}", err);
HttpResponse::InternalServerError().finish()
}
}
}
#[get("/airports/{id}")]
async fn find(id: web::Path<i32>) -> HttpResponse {
match Airports::find(id.into_inner()) {
Ok(a) => HttpResponse::Ok().json(a),
Err(err) => {
error!("{}", err);
HttpResponse::InternalServerError().finish()
}
match Airports::find(id.into_inner()) {
Ok(a) => HttpResponse::Ok().json(a),
Err(err) => {
error!("{}", err);
HttpResponse::InternalServerError().finish()
}
}
}
#[post("/airports")]
async fn create(airport: web::Json<Airport>) -> HttpResponse {
match Airports::create(airport.into_inner()) {
Ok(a) => HttpResponse::Ok().json(a),
Err(err) => {
error!("{}", err);
HttpResponse::InternalServerError().finish()
}
match Airports::create(airport.into_inner()) {
Ok(a) => HttpResponse::Ok().json(a),
Err(err) => {
error!("{}", err);
HttpResponse::InternalServerError().finish()
}
}
}
#[put("/airports/{id}")]
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);
HttpResponse::InternalServerError().finish()
}
match Airports::update(id.into_inner(), airport.into_inner()) {
Ok(a) => HttpResponse::Ok().json(a),
Err(err) => {
error!("{}", err);
HttpResponse::InternalServerError().finish()
}
}
}
#[delete("/airports/{id}")]
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);
HttpResponse::InternalServerError().finish()
}
match Airports::delete(id.into_inner()) {
Ok(a) => HttpResponse::Ok().json(json!({ "deleted": a })),
Err(err) => {
error!("{}", err);
HttpResponse::InternalServerError().finish()
}
}
}
pub fn init_routes(config: &mut web::ServiceConfig) {