Nye-TeeOff/migrations/2026-04-17_add_cooperating_clubs_jsonb.sql

47 lines
1.5 KiB
SQL

DO $$
BEGIN
IF EXISTS (
SELECT 1
FROM information_schema.columns
WHERE table_schema = 'public'
AND table_name = 'facilities'
AND column_name = 'cooperating_clubs'
AND udt_name = 'text'
) THEN
ALTER TABLE public.facilities
RENAME COLUMN cooperating_clubs TO cooperating_clubs_legacy;
END IF;
IF NOT EXISTS (
SELECT 1
FROM information_schema.columns
WHERE table_schema = 'public'
AND table_name = 'facilities'
AND column_name = 'cooperating_clubs'
) THEN
ALTER TABLE public.facilities
ADD COLUMN cooperating_clubs jsonb DEFAULT '[]'::jsonb;
END IF;
ALTER TABLE public.facilities
ALTER COLUMN cooperating_clubs SET DEFAULT '[]'::jsonb;
IF EXISTS (
SELECT 1
FROM information_schema.columns
WHERE table_schema = 'public'
AND table_name = 'facilities'
AND column_name = 'cooperating_clubs_legacy'
) THEN
UPDATE public.facilities
SET cooperating_clubs = CASE
WHEN cooperating_clubs_legacy IS NULL OR btrim(cooperating_clubs_legacy) = '' THEN '[]'::jsonb
WHEN cooperating_clubs_legacy ~ '^\s*\[' THEN cooperating_clubs_legacy::jsonb
ELSE to_jsonb(regexp_split_to_array(cooperating_clubs_legacy, '\s*,\s*'))
END
WHERE cooperating_clubs = '[]'::jsonb;
ALTER TABLE public.facilities
DROP COLUMN cooperating_clubs_legacy;
END IF;
END $$;