Строки префиксов в module_prefix_snapshot_row вместо JSONB blobs. Co-authored-by: Cursor <[email protected]>
26 lines
999 B
SQL
26 lines
999 B
SQL
CREATE TABLE module_prefix_snapshot_row (
|
|
tenant_id UUID NOT NULL,
|
|
module_id UUID NOT NULL,
|
|
ord INTEGER NOT NULL,
|
|
prefix CIDR 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
|
|
);
|
|
|
|
INSERT INTO module_prefix_snapshot_row (tenant_id, module_id, ord, prefix, community_id, source)
|
|
SELECT mps.tenant_id,
|
|
mps.module_id,
|
|
(t.ordinality - 1)::int,
|
|
(t.elem->>'prefix')::cidr,
|
|
NULLIF(t.elem->>'community_id', '')::uuid,
|
|
COALESCE(NULLIF(t.elem->>'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;
|
|
|
|
ALTER TABLE module_prefix_snapshot DROP COLUMN prefixes_json;
|