diff --git a/backend/src/database/migrations/046_rename_shop_to_ausruestungsanfrage.sql b/backend/src/database/migrations/046_rename_shop_to_ausruestungsanfrage.sql index de4b727..fc341a1 100644 --- a/backend/src/database/migrations/046_rename_shop_to_ausruestungsanfrage.sql +++ b/backend/src/database/migrations/046_rename_shop_to_ausruestungsanfrage.sql @@ -21,37 +21,50 @@ ALTER INDEX IF EXISTS idx_shop_anfragen_status RENAME TO idx_ausruestung_anfrage ALTER INDEX IF EXISTS idx_shop_anfrage_positionen_anfrage RENAME TO idx_ausruestung_anfrage_positionen_anfrage; -- ═══════════════════════════════════════════════════════════════════════════ --- 3. Rename triggers +-- 3. Rename triggers (skip if not exist — wrapped in DO block) -- ═══════════════════════════════════════════════════════════════════════════ -ALTER TRIGGER trg_shop_artikel_aktualisiert ON ausruestung_artikel RENAME TO trg_ausruestung_artikel_aktualisiert; -ALTER TRIGGER trg_shop_anfragen_aktualisiert ON ausruestung_anfragen RENAME TO trg_ausruestung_anfragen_aktualisiert; +DO $$ BEGIN + ALTER TRIGGER trg_shop_artikel_aktualisiert ON ausruestung_artikel RENAME TO trg_ausruestung_artikel_aktualisiert; +EXCEPTION WHEN undefined_object THEN NULL; +END $$; + +DO $$ BEGIN + ALTER TRIGGER trg_shop_anfragen_aktualisiert ON ausruestung_anfragen RENAME TO trg_ausruestung_anfragen_aktualisiert; +EXCEPTION WHEN undefined_object THEN NULL; +END $$; -- ═══════════════════════════════════════════════════════════════════════════ --- 4. Update feature_groups +-- 4. Update feature_groups + permissions (drop FK temporarily to avoid constraint violation) -- ═══════════════════════════════════════════════════════════════════════════ +-- Drop FK constraints that reference feature_groups.id +ALTER TABLE permissions DROP CONSTRAINT IF EXISTS permissions_feature_group_id_fkey; +ALTER TABLE group_permissions DROP CONSTRAINT IF EXISTS group_permissions_permission_id_fkey; + +-- Now safe to update feature_groups UPDATE feature_groups SET id = 'ausruestungsanfrage' WHERE id = 'shop'; --- ═══════════════════════════════════════════════════════════════════════════ --- 5. Update permissions --- ═══════════════════════════════════════════════════════════════════════════ - +-- Update permissions UPDATE permissions SET id = REPLACE(id, 'shop:', 'ausruestungsanfrage:'), feature_group_id = 'ausruestungsanfrage' WHERE feature_group_id = 'shop'; --- ═══════════════════════════════════════════════════════════════════════════ --- 6. Update group_permissions --- ═══════════════════════════════════════════════════════════════════════════ - +-- Update group_permissions UPDATE group_permissions SET permission_id = REPLACE(permission_id, 'shop:', 'ausruestungsanfrage:') WHERE permission_id LIKE 'shop:%'; +-- Re-add FK constraints +ALTER TABLE permissions ADD CONSTRAINT permissions_feature_group_id_fkey + FOREIGN KEY (feature_group_id) REFERENCES feature_groups(id) ON UPDATE CASCADE ON DELETE CASCADE; + +ALTER TABLE group_permissions ADD CONSTRAINT group_permissions_permission_id_fkey + FOREIGN KEY (permission_id) REFERENCES permissions(id) ON UPDATE CASCADE ON DELETE CASCADE; + -- ═══════════════════════════════════════════════════════════════════════════ --- 7. Update notification quell_typ references +-- 5. Update notification quell_typ references -- ═══════════════════════════════════════════════════════════════════════════ UPDATE benachrichtigungen SET quell_typ = 'ausruestung_anfrage' WHERE quell_typ = 'shop_anfrage';