Added cases and items endpoints
This commit is contained in:
61
src/cases.rs
Normal file
61
src/cases.rs
Normal file
@@ -0,0 +1,61 @@
|
||||
use crate::AppState;
|
||||
use actix_web::web::Data;
|
||||
use actix_web::{get, web, HttpResponse, Responder};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde_json::to_string;
|
||||
use sqlx::query_as;
|
||||
use crate::types::*;
|
||||
|
||||
|
||||
#[get("/case")]
|
||||
async fn get_case(query: web::Query<DataUuid>, app_state: Data<AppState>) -> impl Responder {
|
||||
let case = query_as!(Case, "SELECT * FROM cases WHERE uuid = $1", query.uuid).fetch_one(&app_state.database).await;
|
||||
if case.is_err() {
|
||||
return HttpResponse::NotFound().finish();
|
||||
}
|
||||
let json = to_string(&case.unwrap());
|
||||
if json.is_err() {
|
||||
return HttpResponse::InternalServerError().finish();
|
||||
}
|
||||
HttpResponse::Ok().body(json.unwrap())
|
||||
}
|
||||
|
||||
#[get("/cases")]
|
||||
async fn get_cases(app_state: Data<AppState>) -> impl Responder {
|
||||
let cases = query_as!(Case, "SELECT * FROM cases").fetch_all(&app_state.database).await;
|
||||
if cases.is_err() {
|
||||
return HttpResponse::NotFound().finish();
|
||||
}
|
||||
let json = to_string(&cases.unwrap());
|
||||
if json.is_err() {
|
||||
return HttpResponse::InternalServerError().finish();
|
||||
}
|
||||
HttpResponse::Ok().body(json.unwrap())
|
||||
}
|
||||
|
||||
|
||||
#[get("/case-items")]
|
||||
async fn get_case_items(query: web::Query<DataUuid>, app_state: Data<AppState>) -> impl Responder {
|
||||
let case = query_as!(Case, "SELECT * FROM cases WHERE uuid = $1", query.uuid).fetch_one(&app_state.database).await;
|
||||
if case.is_err() {
|
||||
return HttpResponse::NotFound().finish();
|
||||
}
|
||||
let case = case.unwrap();
|
||||
let items_cases = query_as!(ItemCases, "SELECT * FROM items_cases WHERE \"case\" = $1", case.id).fetch_all(&app_state.database).await;
|
||||
if items_cases.is_err() {
|
||||
return HttpResponse::NotFound().finish();
|
||||
}
|
||||
let items_cases = items_cases.unwrap();
|
||||
let mut items = vec![];
|
||||
for item_case in items_cases {
|
||||
if let Ok(item) = query_as!(Item, "SELECT * FROM items WHERE id = $1", item_case.item).fetch_one(&app_state.database).await {
|
||||
items.push(item);
|
||||
}
|
||||
}
|
||||
let json = to_string(&items);
|
||||
if json.is_err() {
|
||||
return HttpResponse::InternalServerError().finish();
|
||||
}
|
||||
HttpResponse::Ok().body(json.unwrap())
|
||||
}
|
||||
|
||||
59
src/items.rs
Normal file
59
src/items.rs
Normal file
@@ -0,0 +1,59 @@
|
||||
use actix_web::{get, web, HttpResponse, Responder};
|
||||
use actix_web::web::Data;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde_json::to_string;
|
||||
use sqlx::query_as;
|
||||
use crate::AppState;
|
||||
use crate::types::*;
|
||||
|
||||
|
||||
#[get("/item")]
|
||||
async fn get_item(query: web::Query<DataUuid>, app_state: Data<AppState>) -> impl Responder {
|
||||
let item = query_as!(Item, "SELECT * FROM items WHERE uuid = $1", query.uuid).fetch_one(&app_state.database).await;
|
||||
if item.is_err() {
|
||||
return HttpResponse::NotFound().finish();
|
||||
}
|
||||
let json = to_string(&item.unwrap());
|
||||
if json.is_err() {
|
||||
return HttpResponse::InternalServerError().finish();
|
||||
}
|
||||
HttpResponse::Ok().body(json.unwrap())
|
||||
}
|
||||
|
||||
#[get("/items")]
|
||||
async fn get_items(app_state: Data<AppState>) -> impl Responder {
|
||||
let items = query_as!(Item, "SELECT * FROM items").fetch_all(&app_state.database).await;
|
||||
if items.is_err() {
|
||||
return HttpResponse::NotFound().finish();
|
||||
}
|
||||
let json = to_string(&items.unwrap());
|
||||
if json.is_err() {
|
||||
return HttpResponse::InternalServerError().finish();
|
||||
}
|
||||
HttpResponse::Ok().body(json.unwrap())
|
||||
}
|
||||
|
||||
#[get("/item-cases")]
|
||||
async fn get_item_cases(query: web::Query<DataUuid>, app_state: Data<AppState>) -> impl Responder {
|
||||
let item = query_as!(Item, "SELECT * FROM items WHERE uuid = $1", query.uuid).fetch_one(&app_state.database).await;
|
||||
if item.is_err() {
|
||||
return HttpResponse::NotFound().finish();
|
||||
}
|
||||
let item = item.unwrap();
|
||||
let items_cases = query_as!(ItemCases, "SELECT * FROM items_cases WHERE \"item\" = $1", item.id).fetch_all(&app_state.database).await;
|
||||
if items_cases.is_err() {
|
||||
return HttpResponse::NotFound().finish();
|
||||
}
|
||||
let items_cases = items_cases.unwrap();
|
||||
let mut cases = vec![];
|
||||
for item_case in items_cases {
|
||||
if let Ok(item) = query_as!(Case, "SELECT * FROM cases WHERE id = $1", item_case.item).fetch_one(&app_state.database).await {
|
||||
cases.push(item);
|
||||
}
|
||||
}
|
||||
let json = to_string(&cases);
|
||||
if json.is_err() {
|
||||
return HttpResponse::InternalServerError().finish();
|
||||
}
|
||||
HttpResponse::Ok().body(json.unwrap())
|
||||
}
|
||||
Reference in New Issue
Block a user