// rocie - An enterprise grocery management system // // Copyright (C) 2026 Benedikt Peetz // SPDX-License-Identifier: GPL-3.0-or-later // // This file is part of Rocie. // // You should have received a copy of the License along with this program. // If not, see . use actix_identity::Identity; use actix_web::{HttpResponse, Responder, Result, get, web}; use crate::{ app::App, storage::sql::{ product::{ProductId, ProductIdStub}, product_amount::ProductAmount, }, }; /// Get the amount of an product #[utoipa::path( responses( ( status = OK, description = "Product found in database and amount fetched", body = ProductAmount ), ( status = NOT_FOUND, description = "Product not found in database" ), ( status = UNAUTHORIZED, description = "You did not login before calling this endpoint", ), ( status = INTERNAL_SERVER_ERROR, description = "Server encountered error", body = String ) ), params( ( "id" = ProductId, description = "Product id" ), ) )] #[get("/inventory/{id}")] pub(crate) async fn amount_by_id( app: web::Data, id: web::Path, _user: Identity, ) -> Result { let id = id.into_inner(); match ProductAmount::from_id(&app, id.into()).await? { Some(product) => Ok(HttpResponse::Ok().json(product)), None => Ok(HttpResponse::NotFound().finish()), } }