feat: sync latest ARR implementation
This commit is contained in:
47
database/013_daily_upload_filename.sql
Normal file
47
database/013_daily_upload_filename.sql
Normal file
@@ -0,0 +1,47 @@
|
||||
-- Preserve the browser-supplied XML basename separately from the canonical source artifact name.
|
||||
-- PostgreSQL 15+. Migrations 008-012 remain immutable.
|
||||
|
||||
BEGIN;
|
||||
|
||||
DO $$
|
||||
BEGIN
|
||||
IF current_database() <> 'booking_test' THEN
|
||||
RAISE EXCEPTION
|
||||
'ARR daily upload filename migration is allowed only in booking_test';
|
||||
END IF;
|
||||
IF to_regclass('ingestion.processing_runs') IS NULL
|
||||
OR to_regclass('reporting.monthly_runs') IS NULL THEN
|
||||
RAISE EXCEPTION
|
||||
'ARR migrations 008 through 012 must be applied first';
|
||||
END IF;
|
||||
IF EXISTS (
|
||||
SELECT 1
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema = 'ingestion'
|
||||
AND table_name = 'processing_runs'
|
||||
AND column_name = 'uploaded_filename'
|
||||
) THEN
|
||||
RAISE EXCEPTION
|
||||
'ARR daily upload filename migration is already applied';
|
||||
END IF;
|
||||
END;
|
||||
$$;
|
||||
|
||||
ALTER TABLE ingestion.processing_runs
|
||||
ADD COLUMN uploaded_filename text;
|
||||
|
||||
ALTER TABLE ingestion.processing_runs
|
||||
ADD CONSTRAINT processing_runs_uploaded_filename_check CHECK (
|
||||
uploaded_filename IS NULL
|
||||
OR (
|
||||
char_length(uploaded_filename) BETWEEN 1 AND 255
|
||||
AND uploaded_filename NOT IN ('.', '..')
|
||||
AND uploaded_filename !~ '[[:cntrl:]/\\]'
|
||||
AND right(lower(uploaded_filename), 4) = '.xml'
|
||||
)
|
||||
);
|
||||
|
||||
COMMENT ON COLUMN ingestion.processing_runs.uploaded_filename IS
|
||||
'Validated browser-supplied XML basename for user-facing provenance; NULL on historical runs. Internal source artifacts remain source.xml.';
|
||||
|
||||
COMMIT;
|
||||
Reference in New Issue
Block a user