mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 20:41:09 +02:00
fix(mana-analytics): point migration at public.feedback_status, not feedback.*
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) <noreply@anthropic.com>
This commit is contained in:
parent
e5cd98936f
commit
f10439e369
1 changed files with 22 additions and 13 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue