From 88a48b2e46372f66042fba77be29cb644d51a556 Mon Sep 17 00:00:00 2001 From: Matthias Lodner Date: Mon, 2 Feb 2026 19:18:03 +0100 Subject: [PATCH] Added settings override fields to article. --- common/src/models/article.rs | 24 +++- frontend/app/components/article/article.vue | 118 ++++++++++++------ .../app/components/article/articleCreate.vue | 48 ++++++- frontend/app/store/labelEditorStore.ts | 4 + frontend/app/types/article.ts | 14 ++- ...60202174254_article_settings_overrides.sql | 7 ++ server/src/main.rs | 12 ++ 7 files changed, 184 insertions(+), 43 deletions(-) create mode 100644 server/migrations/20260202174254_article_settings_overrides.sql diff --git a/common/src/models/article.rs b/common/src/models/article.rs index 4eb9ce6..3f4ffc0 100644 --- a/common/src/models/article.rs +++ b/common/src/models/article.rs @@ -17,6 +17,10 @@ pub struct Article { pub ingredients: Option, pub default_unit: Unit, pub variants: Vec, + pub mhd: Option, + pub bio_origin: Option, + pub allergens_text: Option, + pub bio_info: Option, } fn from_postgres_row_small(row: PgRow) -> Article { @@ -29,6 +33,10 @@ fn from_postgres_row_small(row: PgRow) -> Article { ingredients: row.get(5), default_unit: row.get(6), variants: vec![], + mhd: row.get(7), + bio_origin: row.get(8), + allergens_text: row.get(9), + bio_info: row.get(10), } } @@ -55,6 +63,10 @@ async fn from_postgres_row(row: PgRow, pool: PgPool) -> Article { ingredients: row.get(5), default_unit: row.get(6), variants: variants, + mhd: row.get(7), + bio_origin: row.get(8), + allergens_text: row.get(9), + bio_info: row.get(10), } } @@ -121,9 +133,13 @@ pub async fn insert_article(article: &Article, pool: PgPool) -> Option
args.add(&article.description); args.add(&article.ingredients); args.add(&article.default_unit); + args.add(&article.mhd); + args.add(&article.bio_origin); + args.add(&article.allergens_text); + args.add(&article.bio_info); let statement = format!( - "INSERT INTO {} (name, bio, origin, description, ingredients, default_unit_id) VALUES ($1, $2, $3, $4, $5, $6) RETURNING *", + "INSERT INTO {} (name, bio, origin, description, ingredients, default_unit_id, mhd, bio_origin, allergens_text, bio_info) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) RETURNING *", "article", ); @@ -156,9 +172,13 @@ pub async fn update_article(article_id: i64, article: &Article, pool: PgPool) -> args.add(&article.description); args.add(&article.ingredients); args.add(&article.default_unit); + args.add(&article.mhd); + args.add(&article.bio_origin); + args.add(&article.allergens_text); + args.add(&article.bio_info); let statement = format!( - "UPDATE {} SET name = $2, bio = $3, origin = $4, description = $5, ingredients = $6, default_unit_id = $7 WHERE id = $1 RETURNING *", + "UPDATE {} SET name = $2, bio = $3, origin = $4, description = $5, ingredients = $6, default_unit_id = $7, mhd = $8, bio_origin = $9, allergens_text = $10, bio_info = $11 WHERE id = $1 RETURNING *", "article", ); diff --git a/frontend/app/components/article/article.vue b/frontend/app/components/article/article.vue index faadad0..d0f5b93 100644 --- a/frontend/app/components/article/article.vue +++ b/frontend/app/components/article/article.vue @@ -44,7 +44,7 @@ - + mdi-plus-thick @@ -123,6 +133,40 @@ v-model.trim="ingredients" label="Zutaten" /> + + + + + + + + + + + + + + + + + + diff --git a/frontend/app/store/labelEditorStore.ts b/frontend/app/store/labelEditorStore.ts index fd9cf38..dadaea5 100644 --- a/frontend/app/store/labelEditorStore.ts +++ b/frontend/app/store/labelEditorStore.ts @@ -286,6 +286,10 @@ export const useLabelEditorStore = defineStore('label_editor_store', { this.article.origin = updatedArticle.origin; this.article.description = updatedArticle.description; this.article.ingredients = updatedArticle.ingredients; + this.article.mhd = updatedArticle.mhd; + this.article.bio_origin = updatedArticle.bio_origin; + this.article.bio_info = updatedArticle.bio_info; + this.article.allergens_text = updatedArticle.allergens_text; this.addNotification(false, 'Artikel "' + article.name + '" aktualisiert'); } catch { diff --git a/frontend/app/types/article.ts b/frontend/app/types/article.ts index a8eb23e..8c8f834 100644 --- a/frontend/app/types/article.ts +++ b/frontend/app/types/article.ts @@ -11,8 +11,15 @@ export class Article { ingredients: string | null; default_unit: Unit; variants: Array; + mhd: string | null; + bio_origin: string | null; + allergens_text: string | null; + bio_info: string | null; - constructor(id: number, name: string, bio: boolean, origin: Origin, description: string | null, ingredients: string | null, default_unit: Unit, variants: Array | null) { + + constructor(id: number, name: string, bio: boolean, origin: Origin, description: string | null, + ingredients: string | null, default_unit: Unit, variants: Array | null, + mhd: string | null, bio_origin: string | null, allergens_text: string | null, bio_info: string | null) { this.id = id; this.name = name; this.bio = bio; @@ -26,5 +33,10 @@ export class Article { } else { this.variants = variants; } + + this.mhd = mhd; + this.bio_origin = bio_origin; + this.allergens_text = allergens_text; + this.bio_info = bio_info; } } diff --git a/server/migrations/20260202174254_article_settings_overrides.sql b/server/migrations/20260202174254_article_settings_overrides.sql new file mode 100644 index 0000000..336028f --- /dev/null +++ b/server/migrations/20260202174254_article_settings_overrides.sql @@ -0,0 +1,7 @@ +-- Add migration script here + +ALTER TABLE public.article + ADD mhd text, + ADD bio_origin text, + ADD allergens_text text, + ADD bio_info text; diff --git a/server/src/main.rs b/server/src/main.rs index 633a1c5..0e9aa84 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -114,6 +114,10 @@ async fn get_article( ingredients: None, default_unit: Unit::G, variants: vec![], + mhd: None, + bio_origin: None, + allergens_text: None, + bio_info: None, }; (StatusCode::INTERNAL_SERVER_ERROR, Json(article)) @@ -142,6 +146,10 @@ async fn create_article( ingredients: None, default_unit: Unit::G, variants: vec![], + mhd: None, + bio_origin: None, + allergens_text: None, + bio_info: None, }; (StatusCode::INTERNAL_SERVER_ERROR, Json(article)) @@ -172,6 +180,10 @@ async fn update_article_route( ingredients: None, default_unit: Unit::G, variants: vec![], + mhd: None, + bio_origin: None, + allergens_text: None, + bio_info: None, }; (StatusCode::INTERNAL_SERVER_ERROR, Json(article))