about summary refs log tree commit diff stats
path: root/crates/rocie-server/src/api/set/product.rs
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-12-09 13:07:14 +0100
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-12-09 13:07:14 +0100
commitc91dce4f77ae12453203f0a28b91efb6533cc095 (patch)
tree4f50e755dff7f717d45309b08f9fe2c8c87f88bd /crates/rocie-server/src/api/set/product.rs
parentchore(rocie-client): Regenerate (diff)
downloadserver-c91dce4f77ae12453203f0a28b91efb6533cc095.zip
feat(rocie-server): Implement basic user handling and authentication
Diffstat (limited to 'crates/rocie-server/src/api/set/product.rs')
-rw-r--r--crates/rocie-server/src/api/set/product.rs126
1 files changed, 0 insertions, 126 deletions
diff --git a/crates/rocie-server/src/api/set/product.rs b/crates/rocie-server/src/api/set/product.rs
deleted file mode 100644
index 74a92d2..0000000
--- a/crates/rocie-server/src/api/set/product.rs
+++ /dev/null
@@ -1,126 +0,0 @@
-use actix_web::{HttpResponse, Responder, Result, post, web};
-use serde::Deserialize;
-use utoipa::ToSchema;
-
-use crate::{
-    app::App,
-    storage::sql::{
-        barcode::Barcode,
-        insert::Operations,
-        product::{Product, ProductId, ProductIdStub},
-        product_parent::ProductParentId,
-        unit::Unit,
-        unit_property::UnitPropertyId,
-    },
-};
-
-#[derive(Deserialize, ToSchema)]
-struct ProductStub {
-    /// The name of the product
-    name: String,
-
-    /// The Unit Property to use for this product.
-    unit_property: UnitPropertyId,
-
-    /// A description.
-    #[schema(nullable = false)]
-    description: Option<String>,
-
-    /// A parent of this product, otherwise the parent will be the root of the parent tree.
-    #[schema(nullable = false)]
-    parent: Option<ProductParentId>,
-}
-
-/// 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.into(),
-        product_stub.unit_property,
-        &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 = FORBIDDEN,
-            description = "Unit used in request has not been registered yet",
-            body = String,
-        ),
-        (
-            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<ProductIdStub>,
-    barcode: web::Json<Barcode>,
-) -> Result<impl Responder> {
-    let mut ops = Operations::new("associated barcode with product");
-
-    {
-        let units = Unit::get_all(&app).await?;
-        if !units.into_iter().any(|unit| unit.id == barcode.amount.unit) {
-            return Ok(HttpResponse::Forbidden()
-                .body("The used unit has not been registered; it cannot be used.\n"));
-        }
-    }
-
-    match Product::from_id(&app, id.into_inner().into()).await? {
-        Some(product) => {
-            product.associate_barcode(barcode.into_inner(), &mut ops);
-
-            ops.apply(&app).await?;
-
-            Ok(HttpResponse::Ok().finish())
-        }
-        None => Ok(HttpResponse::NotFound().finish()),
-    }
-}