diff options
| author | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2025-10-23 01:36:39 +0200 |
|---|---|---|
| committer | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2025-10-23 01:36:39 +0200 |
| commit | 7bff22756beec82b4a1470e2d325b706dc56e5f2 (patch) | |
| tree | 1566965125cfd5fbd73d654e9ee6ca8256301411 /src/api | |
| parent | feat(form): Re-write the form macro as a proc macro (diff) | |
| download | web-client-7bff22756beec82b4a1470e2d325b706dc56e5f2.zip | |
feat(buy): Provide basic buy interface
Diffstat (limited to 'src/api')
| -rw-r--r-- | src/api/mod.rs | 56 |
1 files changed, 54 insertions, 2 deletions
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<Product, .await .map_err(Into::<Error>::into) } +pub(crate) async fn get_product_by_name( + name: String, +) -> Result< + Product, + rocie_client::apis::Error<rocie_client::apis::api_get_product_api::ProductByNameError>, +> { + let config = expect_context::<Store<ConfigState>>(); + product_by_name(&config.config().read(), &name).await +} +pub(crate) async fn get_products_by_part_name(part_name: String) -> Result<Vec<Product>, Error> { + let config = expect_context::<Store<ConfigState>>(); + product_suggestion_by_name(&config.config().read(), &part_name) + .await + .map_err(Into::<Error>::into) +} pub(crate) async fn get_unit_by_id(unit_id: UnitId) -> Result<Unit, Error> { let config = expect_context::<Store<ConfigState>>(); unit_by_id(&config.config().read(), unit_id) .await .map_err(Into::<Error>::into) } +pub(crate) async fn get_unit_property_by_id( + unit_id: UnitPropertyId, +) -> Result<UnitProperty, Error> { + let config = expect_context::<Store<ConfigState>>(); + unit_property_by_id(&config.config().read(), unit_id) + .await + .map_err(Into::<Error>::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<Vec<Product>, Error> { let config = expect_context::<Store<ConfigState>>(); @@ -48,3 +86,17 @@ pub(crate) async fn get_products() -> Result<Vec<Product>, Error> { .await .map_err(Into::<Error>::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::<Error>::into) +} |
