From fd55a44bfb6e30ed5fee864e2477404d4af2d833 Mon Sep 17 00:00:00 2001 From: hsiegeln <37154749+hsiegeln@users.noreply.github.com> Date: Wed, 22 Apr 2026 16:58:37 +0200 Subject: [PATCH] =?UTF-8?q?feat(shopping):=20Migration=20015=20=E2=80=94?= =?UTF-8?q?=20Check-Keys=20auf=20Unit-Family?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit unit_key in shopping_cart_check wird von Roheinheit (g, kg, ml, l) auf Family-Key (weight, volume) umgestellt, damit Abhaks stabil bleiben wenn die Display-Einheit wechselt. Entstehende Duplikate werden durch Behalten des juengsten rowid dedupliziert. Co-Authored-By: Claude Sonnet 4.6 --- .../db/migrations/015_shopping_check_family.sql | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/lib/server/db/migrations/015_shopping_check_family.sql diff --git a/src/lib/server/db/migrations/015_shopping_check_family.sql b/src/lib/server/db/migrations/015_shopping_check_family.sql new file mode 100644 index 0000000..f396ba1 --- /dev/null +++ b/src/lib/server/db/migrations/015_shopping_check_family.sql @@ -0,0 +1,14 @@ +-- Konsolidierung: unit_key in shopping_cart_check wird zum Family-Key, damit +-- Abhaks stabil bleiben wenn Display-Unit zwischen g und kg wechselt. +-- g/kg → 'weight', ml/l → 'volume', Rest bleibt unveraendert. +UPDATE shopping_cart_check SET unit_key = 'weight' WHERE LOWER(TRIM(unit_key)) IN ('g', 'kg'); +UPDATE shopping_cart_check SET unit_key = 'volume' WHERE LOWER(TRIM(unit_key)) IN ('ml', 'l'); + +-- Nach Relabeling koennen Duplikate entstehen (zwei Zeilen mit 'weight' pro +-- name_key). Juengsten Eintrag behalten. +DELETE FROM shopping_cart_check +WHERE rowid NOT IN ( + SELECT MAX(rowid) + FROM shopping_cart_check + GROUP BY name_key, unit_key +);