From ea482fab0711a2a1623d8952361322b53d55eb70 Mon Sep 17 00:00:00 2001 From: Matthias Lodner Date: Fri, 23 Jan 2026 23:12:47 +0100 Subject: [PATCH] Added variant update functionality. --- common/src/models/variant.rs | 35 ++++++++++ .../app/components/variant/variantCreate.vue | 4 +- .../app/components/variant/variantRow.vue | 68 +++++++++++++++---- frontend/app/store/labelEditorStore.ts | 25 ++++++- server/src/main.rs | 31 ++++++++- 5 files changed, 144 insertions(+), 19 deletions(-) diff --git a/common/src/models/variant.rs b/common/src/models/variant.rs index 07e7d23..6ed5a19 100644 --- a/common/src/models/variant.rs +++ b/common/src/models/variant.rs @@ -88,3 +88,38 @@ pub async fn insert_variant(article_id: i64, variant: &Variant, pool: PgPool) -> } } } + +pub async fn update_variant(variant_id: i64, variant: &Variant, pool: PgPool) -> Option { + let mut args = PgArguments::default(); + args.add(&variant.id); + args.add(&variant.weight); + args.add(&variant.ean); + args.add(&variant.name); + args.add(&variant.description); + args.add(&variant.ingredients); + + info!("Variant: {:#?}", variant); + + let statement = format!( + "UPDATE {} SET weight = $2, ean = $3, name = $4, description = $5, ingredients = $6 WHERE id = $1 RETURNING *", + "variant", + ); + + let res = sqlx::query_with( + statement.as_str(), + args) + .fetch_one(&pool).await; + + info!("{:#?}", res); + + match res { + Ok(record) => { + let variant = from_postgres_row_small(record); + Some(variant) + } + Err(err) => { + error!("Error while updating variant: {}", variant_id); + None + } + } +} diff --git a/frontend/app/components/variant/variantCreate.vue b/frontend/app/components/variant/variantCreate.vue index 0aa0bb5..4530f56 100644 --- a/frontend/app/components/variant/variantCreate.vue +++ b/frontend/app/components/variant/variantCreate.vue @@ -22,7 +22,7 @@ async function create() { const variant: Variant = new Variant(0, weight.value, ean.value, name.value, description.value, ingredients.value); - await store.addVariant(store.article.id, variant); + await store.addVariant(variant); closeDialog(); } @@ -73,7 +73,7 @@ function clearVariables() { mdi-plus-thick - Artikel erstellen + Variante erstellen diff --git a/frontend/app/components/variant/variantRow.vue b/frontend/app/components/variant/variantRow.vue index 911495c..3c4f416 100644 --- a/frontend/app/components/variant/variantRow.vue +++ b/frontend/app/components/variant/variantRow.vue @@ -1,7 +1,7 @@