feat: prepare ARR for controlled public deployment
This commit is contained in:
132
database/005_arr_processing_ingestion.down.sql
Normal file
132
database/005_arr_processing_ingestion.down.sql
Normal file
@@ -0,0 +1,132 @@
|
||||
-- Destructive rollback draft for 005_arr_processing_ingestion.sql.
|
||||
-- Do not execute after any ARR processing job or v3 daily version has been stored.
|
||||
|
||||
BEGIN;
|
||||
|
||||
DO $$
|
||||
BEGIN
|
||||
IF EXISTS (SELECT 1 FROM finance.processing_jobs)
|
||||
OR EXISTS (SELECT 1 FROM finance.processing_attempts)
|
||||
OR EXISTS (SELECT 1 FROM finance.processing_callbacks)
|
||||
OR EXISTS (SELECT 1 FROM finance.outbox_events)
|
||||
OR EXISTS (
|
||||
SELECT 1
|
||||
FROM finance.daily_versions
|
||||
WHERE structured_result_file_id IS NOT NULL
|
||||
OR processing_job_id IS NOT NULL
|
||||
)
|
||||
OR EXISTS (
|
||||
SELECT 1
|
||||
FROM finance.daily_channel_metrics
|
||||
WHERE worksheet_order IS NOT NULL
|
||||
)
|
||||
OR EXISTS (
|
||||
SELECT 1
|
||||
FROM booking.file_objects
|
||||
WHERE file_kind = 'structured_result_json'
|
||||
) THEN
|
||||
RAISE EXCEPTION
|
||||
'refusing rollback: migration 005 data exists';
|
||||
END IF;
|
||||
END;
|
||||
$$;
|
||||
|
||||
DROP INDEX finance.daily_channel_metrics_order_unique;
|
||||
|
||||
ALTER TABLE finance.daily_channel_metrics
|
||||
DROP CONSTRAINT daily_channel_metrics_order_valid,
|
||||
DROP COLUMN worksheet_order;
|
||||
|
||||
ALTER TABLE finance.daily_records
|
||||
DROP CONSTRAINT daily_records_people_valid,
|
||||
DROP CONSTRAINT daily_records_room_count_valid,
|
||||
DROP CONSTRAINT daily_records_dates_and_nights_valid,
|
||||
DROP CONSTRAINT daily_records_total_valid,
|
||||
DROP CONSTRAINT daily_records_kb_valid;
|
||||
|
||||
ALTER TABLE finance.daily_records
|
||||
ADD CONSTRAINT daily_records_people_valid CHECK (
|
||||
(adults IS NULL OR adults >= 0)
|
||||
AND (children IS NULL OR children >= 0)
|
||||
),
|
||||
ADD CONSTRAINT daily_records_room_count_valid CHECK (
|
||||
no_of_rooms IS NULL OR no_of_rooms > 0
|
||||
),
|
||||
ADD CONSTRAINT daily_records_dates_and_nights_valid CHECK (
|
||||
arrival IS NULL
|
||||
OR departure IS NULL
|
||||
OR nights IS NULL
|
||||
OR (
|
||||
departure >= arrival
|
||||
AND nights = departure - arrival
|
||||
)
|
||||
),
|
||||
ADD CONSTRAINT daily_records_total_valid CHECK (
|
||||
real_price IS NULL
|
||||
OR no_of_rooms IS NULL
|
||||
OR nights IS NULL
|
||||
OR total_price IS NULL
|
||||
OR total_price = real_price * no_of_rooms * nights
|
||||
),
|
||||
ADD CONSTRAINT daily_records_kb_valid CHECK (
|
||||
kb_amount IS NULL
|
||||
OR no_of_rooms IS NULL
|
||||
OR kb_amount = no_of_rooms * 100
|
||||
);
|
||||
|
||||
ALTER TABLE finance.daily_versions
|
||||
DROP CONSTRAINT daily_version_active_shape;
|
||||
|
||||
ALTER TABLE finance.daily_versions
|
||||
ADD CONSTRAINT daily_version_active_shape CHECK (
|
||||
version_status <> 'active'
|
||||
OR (
|
||||
business_date IS NOT NULL
|
||||
AND validated_at IS NOT NULL
|
||||
AND activated_at IS NOT NULL
|
||||
AND failure_code IS NULL
|
||||
AND (
|
||||
(
|
||||
ingestion_mode = 'opera_xml'
|
||||
AND daily_report_file_id IS NOT NULL
|
||||
AND result_json_file_id IS NOT NULL
|
||||
)
|
||||
OR ingestion_mode = 'monthly_backfill'
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
DROP INDEX finance.daily_versions_processing_job_unique;
|
||||
DROP INDEX finance.daily_versions_source_date_rule_unique;
|
||||
|
||||
CREATE UNIQUE INDEX daily_versions_source_date_mode_unique
|
||||
ON finance.daily_versions (
|
||||
source_file_id,
|
||||
business_date,
|
||||
ingestion_mode
|
||||
);
|
||||
|
||||
ALTER TABLE finance.daily_versions
|
||||
DROP COLUMN structured_result_file_id,
|
||||
DROP COLUMN processing_job_id;
|
||||
|
||||
DROP TABLE finance.outbox_events;
|
||||
DROP TABLE finance.processing_callbacks;
|
||||
DROP TABLE finance.processing_attempts;
|
||||
DROP TABLE finance.processing_jobs;
|
||||
|
||||
ALTER TABLE booking.file_objects
|
||||
DROP CONSTRAINT file_objects_file_kind_check;
|
||||
|
||||
ALTER TABLE booking.file_objects
|
||||
ADD CONSTRAINT file_objects_file_kind_check CHECK (file_kind IN (
|
||||
'booking_excel',
|
||||
'opera_xml',
|
||||
'daily_xlsx',
|
||||
'monthly_xlsx',
|
||||
'company_ten_day_xlsx',
|
||||
'exception_xlsx',
|
||||
'result_json'
|
||||
));
|
||||
|
||||
COMMIT;
|
||||
Reference in New Issue
Block a user