48 lines
1.5 KiB
MySQL
48 lines
1.5 KiB
MySQL
|
|
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 $$;
|