From f10439e3694af30caa90b8d78bd47f3bbe375902 Mon Sep 17 00:00:00 2001 From: Till JS Date: Sun, 26 Apr 2026 21:55:45 +0200 Subject: [PATCH] fix(mana-analytics): point migration at public.feedback_status, not feedback.* MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Drizzle's pgEnum() ohne pgSchema-Wrap landet immer in public — der schemaFilter versteckt das nur im Diff (siehe Repo-Memory: "Drizzle enums with schemaFilter must use pgSchema().enum()"). Die Tabelle feedback.user_feedback referenziert die Enums quer aus public, das funktioniert; aber die ALTER-TYPE-Statements in der ursprünglichen Migration zielten auf feedback.feedback_status / feedback.feedback_category und hätten damit nichts gefunden. Lokal verifiziert (mana_platform.public.feedback_status, mana_platform.public.feedback_category): - 6 Status-Werte umbenannt → submitted/under_review/planned/in_progress/completed/declined - Default-Status auf 'submitted' - Category 'onboarding-wish' hinzugefügt - Re-Run idempotent (DO-Blöcke + ADD VALUE IF NOT EXISTS) Mittelfristig sollte feedbackSchema.enum(...) verwendet werden, damit Enums tatsächlich im feedback-Namespace landen — eigener Refactor. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../drizzle/0001_align-feedback-enums.sql | 35 ++++++++++++------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/services/mana-analytics/drizzle/0001_align-feedback-enums.sql b/services/mana-analytics/drizzle/0001_align-feedback-enums.sql index 787e3cdf0..b8b7ee28e 100644 --- a/services/mana-analytics/drizzle/0001_align-feedback-enums.sql +++ b/services/mana-analytics/drizzle/0001_align-feedback-enums.sql @@ -1,9 +1,18 @@ -- 0001_align-feedback-enums.sql -- --- Bringt die Postgres-Enums `feedback.feedback_category` und --- `feedback.feedback_status` mit dem `@mana/feedback`-Package in Einklang --- und legt die `onboarding-wish`-Kategorie für den letzten --- Onboarding-Schritt an. +-- Bringt die Postgres-Enums `feedback_category` und `feedback_status` +-- mit dem `@mana/feedback`-Package in Einklang und legt die +-- `onboarding-wish`-Kategorie für den letzten Onboarding-Schritt an. +-- +-- Schema-Hinweis: Die Enum-Typen leben in `public`, nicht in `feedback`. +-- Das ist der bekannte Drizzle-pgEnum-Drift (siehe Repo-Memory: +-- "Drizzle enums with schemaFilter must use pgSchema().enum()") — +-- pgEnum() ohne pgSchema-Wrap landet immer in public, der schemaFilter +-- versteckt sie nur im Schema-Diff. Die Tabelle `feedback.user_feedback` +-- referenziert die Enum-Typen aus public, das funktioniert. Mittelfristig +-- sollte das Schema auf feedbackSchema.enum(...) umgestellt werden — das +-- ist aber ein separater Refactor (alte Enum droppen, neue bauen, +-- Spalten umstellen) und nicht Teil dieser Migration. -- -- Hand-authored, weil `drizzle-kit push` Enum-Werte nicht zuverlässig -- umbenennt. Apply manually before next `pnpm db:push`: @@ -23,36 +32,36 @@ BEGIN SELECT 1 FROM pg_enum e JOIN pg_type t ON t.oid = e.enumtypid JOIN pg_namespace n ON n.oid = t.typnamespace - WHERE t.typname = 'feedback_status' AND n.nspname = 'feedback' AND e.enumlabel = 'new' + WHERE t.typname = 'feedback_status' AND n.nspname = 'public' AND e.enumlabel = 'new' ) THEN - ALTER TYPE feedback.feedback_status RENAME VALUE 'new' TO 'submitted'; + ALTER TYPE public.feedback_status RENAME VALUE 'new' TO 'submitted'; END IF; IF EXISTS ( SELECT 1 FROM pg_enum e JOIN pg_type t ON t.oid = e.enumtypid JOIN pg_namespace n ON n.oid = t.typnamespace - WHERE t.typname = 'feedback_status' AND n.nspname = 'feedback' AND e.enumlabel = 'reviewed' + WHERE t.typname = 'feedback_status' AND n.nspname = 'public' AND e.enumlabel = 'reviewed' ) THEN - ALTER TYPE feedback.feedback_status RENAME VALUE 'reviewed' TO 'under_review'; + ALTER TYPE public.feedback_status RENAME VALUE 'reviewed' TO 'under_review'; END IF; IF EXISTS ( SELECT 1 FROM pg_enum e JOIN pg_type t ON t.oid = e.enumtypid JOIN pg_namespace n ON n.oid = t.typnamespace - WHERE t.typname = 'feedback_status' AND n.nspname = 'feedback' AND e.enumlabel = 'done' + WHERE t.typname = 'feedback_status' AND n.nspname = 'public' AND e.enumlabel = 'done' ) THEN - ALTER TYPE feedback.feedback_status RENAME VALUE 'done' TO 'completed'; + ALTER TYPE public.feedback_status RENAME VALUE 'done' TO 'completed'; END IF; IF EXISTS ( SELECT 1 FROM pg_enum e JOIN pg_type t ON t.oid = e.enumtypid JOIN pg_namespace n ON n.oid = t.typnamespace - WHERE t.typname = 'feedback_status' AND n.nspname = 'feedback' AND e.enumlabel = 'rejected' + WHERE t.typname = 'feedback_status' AND n.nspname = 'public' AND e.enumlabel = 'rejected' ) THEN - ALTER TYPE feedback.feedback_status RENAME VALUE 'rejected' TO 'declined'; + ALTER TYPE public.feedback_status RENAME VALUE 'rejected' TO 'declined'; END IF; END $$; @@ -61,6 +70,6 @@ $$; ALTER TABLE feedback.user_feedback ALTER COLUMN status SET DEFAULT 'submitted'; -- 3. Neue Category für Onboarding-Wishes anlegen. -ALTER TYPE feedback.feedback_category ADD VALUE IF NOT EXISTS 'onboarding-wish'; +ALTER TYPE public.feedback_category ADD VALUE IF NOT EXISTS 'onboarding-wish'; COMMIT;