CREATE TABLE IF NOT EXISTS module_cdn_fetch_log ( id BIGSERIAL PRIMARY KEY, module_id UUID NOT NULL REFERENCES module (id) ON DELETE CASCADE, source_id UUID REFERENCES module_cdn_source (id) ON DELETE SET NULL, http_status INTEGER, bytes BIGINT, error TEXT, fetched_at TIMESTAMPTZ NOT NULL DEFAULT now() ); CREATE INDEX IF NOT EXISTS idx_module_cdn_fetch_log_module ON module_cdn_fetch_log (module_id, fetched_at DESC); ALTER TABLE revision_materialized_prefix ADD COLUMN IF NOT EXISTS meta_json JSONB NOT NULL DEFAULT '{}'; ALTER TABLE module_domain_entry ADD COLUMN IF NOT EXISTS resolve_meta JSONB NOT NULL DEFAULT '{}'; CREATE INDEX IF NOT EXISTS idx_rev_mat_prefix_revision ON revision_materialized_prefix (revision_id); CREATE INDEX IF NOT EXISTS idx_module_tenant ON module (tenant_id); CREATE INDEX IF NOT EXISTS idx_module_prefix_snapshot_collected ON module_prefix_snapshot (collected_at); CREATE INDEX IF NOT EXISTS idx_rev_mat_prefix_value ON revision_materialized_prefix (prefix);