CI / changes (push) Successful in 8s
CI / commitlint (push) Has been skipped
CI / openapi (push) Has been skipped
CI / web (push) Has been skipped
CI / go (push) Successful in 55s
CI / bird2 (push) Successful in 14s
CI / release (push) Successful in 3m21s
Modified the prefix column type in the module_prefix_snapshot_row table to TEXT, allowing for more flexible input. Adjusted related SQL queries and Go struct tags to ensure compatibility with JSON serialization. Cleaned up migration logic to handle prefix and community_id fields more robustly.
47 lines
1.7 KiB
SQL
47 lines
1.7 KiB
SQL
CREATE TABLE module_prefix_snapshot_row (
|
|
tenant_id UUID NOT NULL,
|
|
module_id UUID NOT NULL,
|
|
ord INTEGER NOT NULL,
|
|
prefix TEXT NOT NULL,
|
|
community_id UUID,
|
|
source TEXT NOT NULL DEFAULT '',
|
|
PRIMARY KEY (tenant_id, module_id, ord),
|
|
FOREIGN KEY (tenant_id, module_id)
|
|
REFERENCES module_prefix_snapshot (tenant_id, module_id) ON DELETE CASCADE
|
|
);
|
|
|
|
-- prefixes_json from Go json.Marshal(PrefixRow) used "Prefix"/"CommunityID"/"Source" before json tags.
|
|
INSERT INTO module_prefix_snapshot_row (tenant_id, module_id, ord, prefix, community_id, source)
|
|
SELECT tenant_id,
|
|
module_id,
|
|
(row_number() OVER (PARTITION BY tenant_id, module_id ORDER BY ordinality) - 1)::int,
|
|
prefix,
|
|
NULLIF(community_id, '')::uuid,
|
|
COALESCE(source, '')
|
|
FROM (
|
|
SELECT mps.tenant_id,
|
|
mps.module_id,
|
|
t.ordinality,
|
|
COALESCE(
|
|
NULLIF(trim(t.elem->>'prefix'), ''),
|
|
NULLIF(trim(t.elem->>'Prefix'), '')
|
|
) AS prefix,
|
|
COALESCE(
|
|
NULLIF(trim(t.elem->>'community_id'), ''),
|
|
NULLIF(trim(t.elem->>'CommunityID'), '')
|
|
) AS community_id,
|
|
COALESCE(
|
|
NULLIF(trim(t.elem->>'source'), ''),
|
|
NULLIF(trim(t.elem->>'Source'), ''),
|
|
''
|
|
) AS source
|
|
FROM module_prefix_snapshot mps
|
|
CROSS JOIN LATERAL jsonb_array_elements(mps.prefixes_json) WITH ORDINALITY AS t(elem, ordinality)
|
|
WHERE jsonb_typeof(mps.prefixes_json) = 'array'
|
|
AND jsonb_array_length(mps.prefixes_json) > 0
|
|
) parsed
|
|
WHERE parsed.prefix IS NOT NULL
|
|
AND trim(parsed.prefix) <> '';
|
|
|
|
ALTER TABLE module_prefix_snapshot DROP COLUMN prefixes_json;
|