This commit is contained in:
JMARyA 2024-05-02 16:13:31 +02:00
parent d913772f3b
commit 6d43193959
Signed by: jmarya
GPG key ID: 901B2ADDF27C2263
7 changed files with 382 additions and 323 deletions

View file

@ -3,6 +3,7 @@ use actix_web::{get, HttpRequest, HttpResponse, Responder};
use serde::Deserialize;
use crate::item;
use crate::routes::bad_req;
macro_rules! get_itemdb {
($req:expr) => {{
@ -31,6 +32,7 @@ pub async fn supply_route(
.get_item(&form.item)
.ok_or_else(|| actix_web::error::ErrorBadRequest("The item does not exist"))?
.variant(&form.variant)
.await
.ok_or_else(|| actix_web::error::ErrorBadRequest("The variant does not exist"))?;
let transaction_id = variant
.supply(
@ -49,13 +51,33 @@ pub async fn get_items_route(r: HttpRequest) -> impl Responder {
actix_web::HttpResponse::Ok().json(serde_json::json!({"items": items}))
}
#[derive(Deserialize, Debug)]
pub struct AddVariantForm {
pub variant: String,
pub amount: usize,
}
#[post("/item/{item_id}/variant")]
pub async fn add_variant_route(
r: HttpRequest,
f: actix_web::web::Form<AddVariantForm>,
) -> actix_web::Result<impl Responder> {
let id = r.match_info().query("item_id");
let itemdb = get_itemdb!(r);
let item = itemdb
.get_item(id)
.ok_or_else(|| bad_req("The item does not exist"))?;
item.add_variant(&f.variant, f.amount);
Ok(HttpResponse::Ok())
}
#[get("/item/{item_id}/variants")]
pub async fn item_variants_page(r: HttpRequest) -> actix_web::Result<impl Responder> {
let id = r.match_info().query("item_id");
let itemdb = get_itemdb!(r);
let item = itemdb
.get_item(id)
.ok_or_else(|| actix_web::error::ErrorBadRequest("The item does not exist"))?;
.ok_or_else(|| bad_req("The item does not exist"))?;
let variants = item.get_variants().await;
Ok(HttpResponse::Ok().json(serde_json::json!({

View file

@ -1 +1,5 @@
pub mod item;
pub fn bad_req(msg: &'static str) -> actix_web::Error {
actix_web::error::ErrorBadRequest(msg)
}