platform/server/postgres/migrations/allSchema.sql
Denis Bykhov 084eca268e
Some checks are pending
CI / build (push) Waiting to run
CI / svelte-check (push) Blocked by required conditions
CI / formatting (push) Blocked by required conditions
CI / test (push) Blocked by required conditions
CI / uitest (push) Waiting to run
CI / uitest-pg (push) Waiting to run
CI / uitest-qms (push) Waiting to run
CI / docker-build (push) Blocked by required conditions
CI / dist-build (push) Blocked by required conditions
Extract domain fields (#7075)
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2024-11-01 21:03:43 +05:00

37 lines
1.1 KiB
SQL

DO $$
DECLARE
tbl_name text;
hash_col_not_exists boolean;
data_col_exists boolean;
BEGIN
FOR tbl_name IN
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'public'
AND table_type = 'BASE TABLE'
LOOP
EXECUTE format('
SELECT EXISTS (
SELECT 1
FROM information_schema.columns
WHERE table_name = %L
AND column_name = ''data''
AND data_type = ''jsonb''
);', tbl_name) INTO data_col_exists;
EXECUTE format('
SELECT NOT EXISTS (
SELECT 1
FROM information_schema.columns
WHERE table_name = %L
AND column_name = ''"%%hash%%"''
);', tbl_name) INTO hash_col_not_exists;
IF data_col_exists AND hash_col_not_exists THEN
EXECUTE format('
ALTER TABLE %I ADD COLUMN "%%hash%%" text;', tbl_name);
EXECUTE format('
UPDATE %I SET "%%hash%%" = data->>''%%data%%'';', tbl_name);
END IF;
END LOOP;
END $$;