diff options
Diffstat (limited to 'crates/rocie-server/src/api/set.rs')
| -rw-r--r-- | crates/rocie-server/src/api/set.rs | 99 |
1 files changed, 0 insertions, 99 deletions
diff --git a/crates/rocie-server/src/api/set.rs b/crates/rocie-server/src/api/set.rs deleted file mode 100644 index 0a6af1b..0000000 --- a/crates/rocie-server/src/api/set.rs +++ /dev/null @@ -1,99 +0,0 @@ -use actix_web::{HttpResponse, Responder, Result, post, web}; -use serde::Deserialize; -use utoipa::ToSchema; - -use crate::{ - app::App, - storage::sql::{ - insert::Operations, - product::{Barcode, Product, ProductId}, - }, -}; - -#[derive(Deserialize, ToSchema)] -struct ProductStub { - name: String, - description: Option<String>, - parent: Option<ProductId>, -} - -pub(crate) fn register_paths(cfg: &mut web::ServiceConfig) { - cfg.service(register_product).service(associate_barcode); -} - -/// Register a product -#[utoipa::path( - responses( - ( - status = 200, - description = "Product successfully registered in database", - body = ProductId, - ), - ( - status = INTERNAL_SERVER_ERROR, - description = "Server encountered error", - body = String, - ) - ), - request_body = ProductStub, -)] -#[post("/product/new")] -pub(crate) async fn register_product( - app: web::Data<App>, - product_stub: web::Json<ProductStub>, -) -> Result<impl Responder> { - let mut ops = Operations::new("register product"); - - let product = Product::register( - product_stub.name.clone(), - product_stub.description.clone(), - product_stub.parent, - &mut ops, - ); - - ops.apply(&app).await?; - - Ok(HttpResponse::Ok().json(product.id)) -} - -/// Associate a barcode with a product -#[utoipa::path( - responses( - ( - status = OK, - description = "Barcode successfully associated with product", - ), - ( - status = NOT_FOUND, - description = "Product id not found in database", - ), - ( - status = INTERNAL_SERVER_ERROR, - description = "Server encountered error", - body = String, - ) - ), - params ( - ("id" = ProductId, description = "The id of the product to associated the barcode with"), - ), - request_body = Barcode, -)] -#[post("/product/{id}/associate")] -pub(crate) async fn associate_barcode( - app: web::Data<App>, - id: web::Path<ProductId>, - barcode: web::Json<Barcode>, -) -> Result<impl Responder> { - let mut ops = Operations::new("associated barcode with product"); - - match Product::from_id(&app, id.into_inner()).await? { - Some(product) => { - product.associate_barcode(barcode.into_inner(), &mut ops); - - ops.apply(&app).await?; - - Ok(HttpResponse::Ok().finish()) - } - None => Ok(HttpResponse::NotFound().finish()), - } -} |
