From 7bff22756beec82b4a1470e2d325b706dc56e5f2 Mon Sep 17 00:00:00 2001 From: Benedikt Peetz Date: Thu, 23 Oct 2025 01:36:39 +0200 Subject: feat(buy): Provide basic buy interface --- src/api/mod.rs | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 54 insertions(+), 2 deletions(-) (limited to 'src/api/mod.rs') diff --git a/src/api/mod.rs b/src/api/mod.rs index 8b9e77d..3879223 100644 --- a/src/api/mod.rs +++ b/src/api/mod.rs @@ -6,10 +6,16 @@ use reactive_stores::Store; use rocie_client::{ apis::{ api_get_inventory_api::amount_by_id, - api_get_product_api::{product_by_id, products}, + api_get_product_api::{ + product_by_id, product_by_name, product_suggestion_by_name, products, + }, api_get_unit_api::unit_by_id, + api_get_unit_property_api::unit_property_by_id, + api_set_barcode_api::buy_barcode, configuration::Configuration, + }, + models::{ + BarcodeId, Product, ProductAmount, ProductId, Unit, UnitId, UnitProperty, UnitPropertyId, }, - models::{Product, ProductAmount, ProductId, Unit, UnitId}, }; use crate::{ConfigState, ConfigStateStoreFields}; @@ -26,12 +32,36 @@ pub(crate) async fn get_product_by_id(product_id: ProductId) -> Result::into) } +pub(crate) async fn get_product_by_name( + name: String, +) -> Result< + Product, + rocie_client::apis::Error, +> { + let config = expect_context::>(); + product_by_name(&config.config().read(), &name).await +} +pub(crate) async fn get_products_by_part_name(part_name: String) -> Result, Error> { + let config = expect_context::>(); + product_suggestion_by_name(&config.config().read(), &part_name) + .await + .map_err(Into::::into) +} pub(crate) async fn get_unit_by_id(unit_id: UnitId) -> Result { let config = expect_context::>(); unit_by_id(&config.config().read(), unit_id) .await .map_err(Into::::into) } +pub(crate) async fn get_unit_property_by_id( + unit_id: UnitPropertyId, +) -> Result { + let config = expect_context::>(); + unit_property_by_id(&config.config().read(), unit_id) + .await + .map_err(Into::::into) +} + pub(crate) async fn get_full_product_by_id( id: ProductId, ) -> Result<(Product, ProductAmount, Unit), Error> { @@ -41,6 +71,14 @@ pub(crate) async fn get_full_product_by_id( Ok::<_, Error>((product, amount, unit)) } +pub(crate) async fn get_product_unit_by_id( + id: ProductId, +) -> Result<(Product, UnitProperty), Error> { + let product = get_product_by_id(id).await?; + let unit = get_unit_property_by_id(product.unit_property).await?; + + Ok::<_, Error>((product, unit)) +} pub(crate) async fn get_products() -> Result, Error> { let config = expect_context::>(); @@ -48,3 +86,17 @@ pub(crate) async fn get_products() -> Result, Error> { .await .map_err(Into::::into) } + +pub(crate) async fn buy_barcode_wrapper( + config: &Configuration, + barcode_number: u32, +) -> Result<(), Error> { + buy_barcode( + config, + BarcodeId { + value: barcode_number, + }, + ) + .await + .map_err(Into::::into) +} -- cgit 1.4.1