fix: make migrations 048/049 safe for environments without canonical tables
All checks were successful
CI/CD / go-lint (push) Has been skipped
CI/CD / python-lint (push) Has been skipped
CI/CD / nodejs-lint (push) Has been skipped
CI/CD / test-go-ai-compliance (push) Successful in 32s
CI/CD / test-python-backend-compliance (push) Successful in 33s
CI/CD / test-python-document-crawler (push) Successful in 21s
CI/CD / test-python-dsms-gateway (push) Successful in 17s
CI/CD / validate-canonical-controls (push) Successful in 12s
CI/CD / Deploy (push) Successful in 2s
All checks were successful
CI/CD / go-lint (push) Has been skipped
CI/CD / python-lint (push) Has been skipped
CI/CD / nodejs-lint (push) Has been skipped
CI/CD / test-go-ai-compliance (push) Successful in 32s
CI/CD / test-python-backend-compliance (push) Successful in 33s
CI/CD / test-python-document-crawler (push) Successful in 21s
CI/CD / test-python-dsms-gateway (push) Successful in 17s
CI/CD / validate-canonical-controls (push) Successful in 12s
CI/CD / Deploy (push) Successful in 2s
Migrations 048 and 049 reference canonical_processed_chunks and canonical_controls tables which may not exist on all environments. Wrap ALTER TABLE statements in DO blocks that check for table existence first. This unblocks migrations 050-053 on production. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,17 +1,22 @@
|
|||||||
-- 048: Expand processing_path CHECK constraint for new pipeline paths
|
-- 048: Expand processing_path CHECK constraint for new pipeline paths
|
||||||
-- New values: prefilter_skip, no_control, store_failed, error
|
-- New values: prefilter_skip, no_control, store_failed, error
|
||||||
|
-- Safe: only runs if the table exists (may not exist on all environments)
|
||||||
|
|
||||||
ALTER TABLE canonical_processed_chunks
|
DO $$
|
||||||
DROP CONSTRAINT IF EXISTS canonical_processed_chunks_processing_path_check;
|
BEGIN
|
||||||
|
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'canonical_processed_chunks') THEN
|
||||||
ALTER TABLE canonical_processed_chunks
|
ALTER TABLE canonical_processed_chunks
|
||||||
ADD CONSTRAINT canonical_processed_chunks_processing_path_check
|
DROP CONSTRAINT IF EXISTS canonical_processed_chunks_processing_path_check;
|
||||||
CHECK (processing_path IN (
|
ALTER TABLE canonical_processed_chunks
|
||||||
'structured', -- Rule 1/2: structured from original text
|
ADD CONSTRAINT canonical_processed_chunks_processing_path_check
|
||||||
'llm_reform', -- Rule 3: LLM reformulated
|
CHECK (processing_path IN (
|
||||||
'skipped', -- Legacy: skipped for other reasons
|
'structured',
|
||||||
'prefilter_skip', -- Local LLM determined chunk has no requirement
|
'llm_reform',
|
||||||
'no_control', -- Processing ran but no control could be derived
|
'skipped',
|
||||||
'store_failed', -- Control generated but DB store failed
|
'prefilter_skip',
|
||||||
'error' -- Processing error occurred
|
'no_control',
|
||||||
));
|
'store_failed',
|
||||||
|
'error'
|
||||||
|
));
|
||||||
|
END IF;
|
||||||
|
END $$;
|
||||||
|
|||||||
@@ -1,8 +1,13 @@
|
|||||||
-- 049: Add target_audience field to canonical_controls
|
-- 049: Add target_audience field to canonical_controls
|
||||||
-- Distinguishes who a control is relevant for: enterprises, authorities, providers, or all.
|
-- Distinguishes who a control is relevant for: enterprises, authorities, providers, or all.
|
||||||
|
-- Safe: only runs if the table exists (may not exist on all environments)
|
||||||
|
|
||||||
ALTER TABLE canonical_controls ADD COLUMN IF NOT EXISTS
|
DO $$
|
||||||
target_audience VARCHAR(20) DEFAULT NULL
|
BEGIN
|
||||||
CHECK (target_audience IN ('enterprise', 'authority', 'provider', 'all'));
|
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'canonical_controls') THEN
|
||||||
|
ALTER TABLE canonical_controls ADD COLUMN IF NOT EXISTS
|
||||||
CREATE INDEX IF NOT EXISTS idx_cc_target_audience ON canonical_controls(target_audience);
|
target_audience VARCHAR(20) DEFAULT NULL
|
||||||
|
CHECK (target_audience IN ('enterprise', 'authority', 'provider', 'all'));
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_cc_target_audience ON canonical_controls(target_audience);
|
||||||
|
END IF;
|
||||||
|
END $$;
|
||||||
|
|||||||
Reference in New Issue
Block a user