From 1e84ba267c4d096e4627c2afeae96468fc033008 Mon Sep 17 00:00:00 2001 From: Christian Date: Thu, 11 Jun 2026 09:37:41 +0200 Subject: [PATCH] Fix sag status constraint to support active case statuses --- .../190_sag_status_constraint_expand.sql | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 migrations/190_sag_status_constraint_expand.sql diff --git a/migrations/190_sag_status_constraint_expand.sql b/migrations/190_sag_status_constraint_expand.sql new file mode 100644 index 0000000..d60b0fa --- /dev/null +++ b/migrations/190_sag_status_constraint_expand.sql @@ -0,0 +1,48 @@ +-- Migration 190: Align sag_sager status constraint with current case status model +-- Fixes PATCH /api/v1/sag/{id} failures when using statuses beyond 'åben'/'lukket'. + +DO $$ +DECLARE + constraint_row RECORD; +BEGIN + -- Drop legacy check constraints on sag_sager.status regardless of their generated name. + FOR constraint_row IN + SELECT c.conname + FROM pg_constraint c + JOIN pg_class t ON t.oid = c.conrelid + JOIN pg_namespace n ON n.oid = t.relnamespace + WHERE n.nspname = 'public' + AND t.relname = 'sag_sager' + AND c.contype = 'c' + AND pg_get_constraintdef(c.oid) ILIKE '%status%' + LOOP + EXECUTE format('ALTER TABLE public.sag_sager DROP CONSTRAINT IF EXISTS %I', constraint_row.conname); + END LOOP; +END $$; + +UPDATE public.sag_sager +SET status = CASE + WHEN lower(trim(status)) IN ('aaben', 'open') THEN 'åben' + WHEN lower(trim(status)) IN ('i_gang', 'in_progress', 'under behandling') THEN 'under behandling' + WHEN lower(trim(status)) IN ('on_hold', 'waiting', 'afventer') THEN 'afventer' + WHEN lower(trim(status)) IN ('resolved', 'løst') THEN 'løst' + WHEN lower(trim(status)) IN ('closed', 'afsluttet', 'lukket') THEN 'lukket' + ELSE status +END; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 + FROM pg_constraint c + JOIN pg_class t ON t.oid = c.conrelid + JOIN pg_namespace n ON n.oid = t.relnamespace + WHERE n.nspname = 'public' + AND t.relname = 'sag_sager' + AND c.conname = 'sag_sager_status_check' + ) THEN + ALTER TABLE public.sag_sager + ADD CONSTRAINT sag_sager_status_check + CHECK (status IN ('åben', 'under behandling', 'afventer', 'løst', 'lukket')); + END IF; +END $$;