dukcapil/migrations/000012_rename_dispositions_table.down.sql
Aditya Siregar 1964fe50de Update
2025-08-16 20:37:02 +07:00

42 lines
1.8 KiB
PL/PgSQL

BEGIN;
-- =======================
-- DROP NEW ASSOCIATION TABLE
-- =======================
DROP TABLE IF EXISTS letter_incoming_dispositions_department;
-- =======================
-- RESTORE LETTER DISPOSITIONS TABLE STRUCTURE
-- =======================
-- Add back the columns that were removed
ALTER TABLE letter_incoming_dispositions ADD COLUMN IF NOT EXISTS from_user_id UUID REFERENCES users(id) ON DELETE SET NULL;
ALTER TABLE letter_incoming_dispositions ADD COLUMN IF NOT EXISTS to_user_id UUID REFERENCES users(id) ON DELETE SET NULL;
ALTER TABLE letter_incoming_dispositions ADD COLUMN IF NOT EXISTS to_department_id UUID REFERENCES departments(id) ON DELETE SET NULL;
ALTER TABLE letter_incoming_dispositions ADD COLUMN IF NOT EXISTS status TEXT NOT NULL DEFAULT 'pending' CHECK (status IN ('pending','read','rejected','completed'));
ALTER TABLE letter_incoming_dispositions ADD COLUMN IF NOT EXISTS completed_at TIMESTAMP WITHOUT TIME ZONE;
-- Rename department_id back to from_department_id
ALTER TABLE letter_incoming_dispositions RENAME COLUMN department_id TO from_department_id;
-- =======================
-- RESTORE TRIGGERS AND INDEXES
-- =======================
-- Drop new trigger
DROP TRIGGER IF EXISTS trg_letter_incoming_dispositions_updated_at ON letter_incoming_dispositions;
-- Restore old trigger
CREATE TRIGGER trg_letter_dispositions_updated_at
BEFORE UPDATE ON letter_incoming_dispositions
FOR EACH ROW EXECUTE FUNCTION set_updated_at();
-- Restore index names
DROP INDEX IF EXISTS idx_letter_incoming_dispositions_letter;
CREATE INDEX IF NOT EXISTS idx_letter_dispositions_letter ON letter_incoming_dispositions(letter_id);
-- =======================
-- RENAME TABLE BACK
-- =======================
ALTER TABLE letter_incoming_dispositions RENAME TO letter_dispositions;
COMMIT;