Update
This commit is contained in:
@@ -5,7 +5,8 @@ DROP TABLE IF EXISTS letter_incoming_discussion_attachments;
|
||||
DROP TABLE IF EXISTS letter_incoming_discussions;
|
||||
DROP TABLE IF EXISTS letter_disposition_actions;
|
||||
DROP TABLE IF EXISTS disposition_notes;
|
||||
DROP TABLE IF EXISTS letter_dispositions;
|
||||
DROP TABLE IF EXISTS letter_incoming_dispositions_department;
|
||||
DROP TABLE IF EXISTS letter_incoming_dispositions;
|
||||
DROP TABLE IF EXISTS letter_incoming_attachments;
|
||||
DROP TABLE IF EXISTS letter_incoming_labels;
|
||||
DROP TABLE IF EXISTS letter_incoming_recipients;
|
||||
|
||||
@@ -106,7 +106,7 @@ CREATE TRIGGER trg_letter_dispositions_updated_at
|
||||
-- =======================
|
||||
CREATE TABLE IF NOT EXISTS disposition_notes (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
disposition_id UUID NOT NULL REFERENCES letter_dispositions(id) ON DELETE CASCADE,
|
||||
disposition_id UUID NOT NULL REFERENCES letter_incoming_dispositions(id) ON DELETE CASCADE,
|
||||
user_id UUID REFERENCES users(id) ON DELETE SET NULL,
|
||||
note TEXT NOT NULL,
|
||||
created_at TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP
|
||||
@@ -119,7 +119,7 @@ CREATE INDEX IF NOT EXISTS idx_disposition_notes_disposition ON disposition_note
|
||||
-- =======================
|
||||
CREATE TABLE IF NOT EXISTS letter_disposition_actions (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
disposition_id UUID NOT NULL REFERENCES letter_dispositions(id) ON DELETE CASCADE,
|
||||
disposition_id UUID NOT NULL REFERENCES letter_incoming_dispositions(id) ON DELETE CASCADE,
|
||||
action_id UUID NOT NULL REFERENCES disposition_actions(id) ON DELETE RESTRICT,
|
||||
note TEXT,
|
||||
created_by UUID NOT NULL REFERENCES users(id) ON DELETE RESTRICT,
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
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;
|
||||
@@ -0,0 +1,54 @@
|
||||
BEGIN;
|
||||
|
||||
-- =======================
|
||||
-- RENAME LETTER DISPOSITIONS TABLE
|
||||
-- =======================
|
||||
ALTER TABLE letter_dispositions RENAME TO letter_incoming_dispositions;
|
||||
|
||||
-- =======================
|
||||
-- MODIFY LETTER INCOMING DISPOSITIONS TABLE STRUCTURE
|
||||
-- =======================
|
||||
-- Drop existing columns that are not needed
|
||||
ALTER TABLE letter_incoming_dispositions DROP COLUMN IF EXISTS from_user_id;
|
||||
ALTER TABLE letter_incoming_dispositions DROP COLUMN IF EXISTS to_user_id;
|
||||
ALTER TABLE letter_incoming_dispositions DROP COLUMN IF EXISTS to_department_id;
|
||||
ALTER TABLE letter_incoming_dispositions DROP COLUMN IF EXISTS status;
|
||||
ALTER TABLE letter_incoming_dispositions DROP COLUMN IF EXISTS completed_at;
|
||||
|
||||
-- Rename from_department_id to department_id
|
||||
ALTER TABLE letter_incoming_dispositions RENAME COLUMN from_department_id TO department_id;
|
||||
|
||||
-- Add missing columns if they don't exist
|
||||
ALTER TABLE letter_incoming_dispositions ADD COLUMN IF NOT EXISTS read_at TIMESTAMP WITHOUT TIME ZONE;
|
||||
ALTER TABLE letter_incoming_dispositions ADD COLUMN IF NOT EXISTS updated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP;
|
||||
|
||||
-- =======================
|
||||
-- CREATE LETTER INCOMING DISPOSITIONS DEPARTMENT ASSOCIATION TABLE
|
||||
-- =======================
|
||||
CREATE TABLE IF NOT EXISTS letter_incoming_dispositions_department (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
letter_incoming_disposition_id UUID NOT NULL REFERENCES letter_incoming_dispositions(id) ON DELETE CASCADE,
|
||||
department_id UUID NOT NULL REFERENCES departments(id) ON DELETE CASCADE,
|
||||
created_at TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE (letter_incoming_disposition_id, department_id)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_letter_incoming_dispositions_department_disposition ON letter_incoming_dispositions_department(letter_incoming_disposition_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_letter_incoming_dispositions_department_dept ON letter_incoming_dispositions_department(department_id);
|
||||
|
||||
-- =======================
|
||||
-- UPDATE TRIGGERS AND INDEXES
|
||||
-- =======================
|
||||
-- Drop old trigger
|
||||
DROP TRIGGER IF EXISTS trg_letter_dispositions_updated_at ON letter_incoming_dispositions;
|
||||
|
||||
-- Create new trigger
|
||||
CREATE TRIGGER trg_letter_incoming_dispositions_updated_at
|
||||
BEFORE UPDATE ON letter_incoming_dispositions
|
||||
FOR EACH ROW EXECUTE FUNCTION set_updated_at();
|
||||
|
||||
-- Update index names
|
||||
DROP INDEX IF EXISTS idx_letter_dispositions_letter;
|
||||
CREATE INDEX IF NOT EXISTS idx_letter_incoming_dispositions_letter ON letter_incoming_dispositions(letter_id);
|
||||
|
||||
COMMIT;
|
||||
Reference in New Issue
Block a user