feat: prepare ARR for controlled public deployment
This commit is contained in:
98
database/010_mcp_result_ingestion.down.sql
Normal file
98
database/010_mcp_result_ingestion.down.sql
Normal file
@@ -0,0 +1,98 @@
|
||||
-- Manual rollback for migration 010. Never run after direct MCP data exists.
|
||||
|
||||
BEGIN;
|
||||
|
||||
DO $$
|
||||
BEGIN
|
||||
IF current_database() <> 'booking_test' THEN
|
||||
RAISE EXCEPTION
|
||||
'ARR MCP result ingestion rollback is allowed only in booking_test';
|
||||
END IF;
|
||||
IF to_regclass('ingestion.result_submission_grants') IS NULL
|
||||
OR to_regclass('ingestion.result_submissions') IS NULL THEN
|
||||
RAISE EXCEPTION
|
||||
'ARR MCP result ingestion migration 010 is not applied';
|
||||
END IF;
|
||||
IF EXISTS (SELECT 1 FROM ingestion.result_submissions)
|
||||
OR EXISTS (SELECT 1 FROM ingestion.result_submission_grants)
|
||||
OR EXISTS (
|
||||
SELECT 1
|
||||
FROM ingestion.processing_runs
|
||||
WHERE result_delivery_mode = 'direct_mcp'
|
||||
)
|
||||
OR EXISTS (
|
||||
SELECT 1
|
||||
FROM finance.daily_versions
|
||||
WHERE result_delivery_mode = 'direct_mcp'
|
||||
) THEN
|
||||
RAISE EXCEPTION
|
||||
'refusing rollback: migration 010 direct MCP state exists';
|
||||
END IF;
|
||||
END;
|
||||
$$;
|
||||
|
||||
DROP TABLE ingestion.result_submissions;
|
||||
DROP TABLE ingestion.result_submission_grants;
|
||||
|
||||
ALTER TABLE finance.daily_versions
|
||||
DROP CONSTRAINT daily_versions_status_shape,
|
||||
DROP CONSTRAINT daily_versions_result_delivery_shape,
|
||||
DROP CONSTRAINT daily_versions_result_delivery_mode_check,
|
||||
DROP COLUMN result_delivery_mode;
|
||||
|
||||
ALTER TABLE finance.daily_versions
|
||||
ADD CONSTRAINT daily_versions_status_shape CHECK (
|
||||
(
|
||||
version_status IN ('validated', 'active', 'superseded')
|
||||
AND business_date IS NOT NULL
|
||||
AND daily_report_artifact_id IS NOT NULL
|
||||
AND result_json_artifact_id IS NOT NULL
|
||||
AND structured_result_artifact_id IS NOT NULL
|
||||
AND exception_report_artifact_id IS NULL
|
||||
AND failure_code IS NULL
|
||||
AND validated_at IS NOT NULL
|
||||
)
|
||||
OR (
|
||||
version_status = 'rejected'
|
||||
AND failure_code IS NOT NULL
|
||||
)
|
||||
);
|
||||
|
||||
ALTER TABLE ingestion.processing_runs
|
||||
DROP CONSTRAINT processing_runs_terminal_shape,
|
||||
DROP CONSTRAINT processing_runs_result_delivery_pipeline_check,
|
||||
DROP CONSTRAINT processing_runs_result_delivery_mode_check,
|
||||
DROP COLUMN result_delivery_mode;
|
||||
|
||||
ALTER TABLE ingestion.processing_runs
|
||||
ADD CONSTRAINT processing_runs_terminal_shape CHECK (
|
||||
(
|
||||
run_status = 'accepted'
|
||||
AND failure_code IS NULL
|
||||
AND validated_at IS NOT NULL
|
||||
AND finished_at IS NOT NULL
|
||||
AND (
|
||||
pipeline_type <> 'opera_daily'
|
||||
OR (
|
||||
result_artifact_id IS NOT NULL
|
||||
AND business_date IS NOT NULL
|
||||
AND delivered_processor_version IS NOT NULL
|
||||
AND delivered_rule_set_sha256 IS NOT NULL
|
||||
AND result_schema_version IS NOT NULL
|
||||
AND delivery_sha256 IS NOT NULL
|
||||
)
|
||||
)
|
||||
)
|
||||
OR (
|
||||
run_status IN ('rejected', 'failed')
|
||||
AND failure_code IS NOT NULL
|
||||
AND finished_at IS NOT NULL
|
||||
)
|
||||
OR (
|
||||
run_status = 'cancelled'
|
||||
AND finished_at IS NOT NULL
|
||||
)
|
||||
OR run_status IN ('received', 'queued', 'running', 'validating')
|
||||
);
|
||||
|
||||
COMMIT;
|
||||
Reference in New Issue
Block a user