DROP TRIGGER IF EXISTS payment_review_cases_set_updated_at ON payment_review_cases;
DROP TRIGGER IF EXISTS payment_reason_code_mappings_set_updated_at ON payment_reason_code_mappings;

ALTER TABLE sepa_settlement_events
    DROP CONSTRAINT IF EXISTS sepa_settlement_events_event_type_check;

ALTER TABLE sepa_settlement_events
    ADD CONSTRAINT sepa_settlement_events_event_type_check
    CHECK (event_type IN ('queued', 'processing', 'completed', 'failed', 'retried'));

DROP INDEX IF EXISTS transfers_payment_review_status_idx;
DROP TABLE IF EXISTS payment_review_cases;
DROP TABLE IF EXISTS payment_status_events;
DROP TABLE IF EXISTS payment_reason_code_mappings;

DROP TRIGGER IF EXISTS transfers_status_transition_enforce ON transfers;
DROP FUNCTION IF EXISTS enforce_transfer_status_transition();
DROP TABLE IF EXISTS payment_status_transitions;

ALTER TABLE transfers
    DROP COLUMN IF EXISTS manual_review_required,
    DROP COLUMN IF EXISTS payment_reason_description,
    DROP COLUMN IF EXISTS payment_reason_category,
    DROP COLUMN IF EXISTS payment_reason_code;

ALTER TABLE transfers
    DROP CONSTRAINT IF EXISTS transfers_status_check;

ALTER TABLE transfers
    ADD CONSTRAINT transfers_status_check
    CHECK (status IN ('pending', 'processing', 'completed', 'failed', 'reversed'));
