dukcapil/migrations/000034_add_archived_indexes.up.sql
2025-09-08 12:24:37 +07:00

36 lines
1.8 KiB
SQL

-- Add is_archived column to letter_incoming_recipients if it doesn't exist
ALTER TABLE letter_incoming_recipients
ADD COLUMN IF NOT EXISTS is_archived BOOLEAN DEFAULT FALSE;
-- Add is_archived column to letter_outgoing_recipients if it doesn't exist
ALTER TABLE letter_outgoing_recipients
ADD COLUMN IF NOT EXISTS is_archived BOOLEAN DEFAULT FALSE;
-- Add indexes for efficient archiving queries on letter_incoming_recipients
-- Note: letter_incoming_recipients uses recipient_user_id and recipient_department_id
CREATE INDEX IF NOT EXISTS idx_letter_incoming_recipients_archived
ON letter_incoming_recipients(is_archived, recipient_user_id, letter_id)
WHERE is_archived = false;
CREATE INDEX IF NOT EXISTS idx_letter_incoming_recipients_user_archived
ON letter_incoming_recipients(recipient_user_id, is_archived, letter_id);
CREATE INDEX IF NOT EXISTS idx_letter_incoming_recipients_letter_archived
ON letter_incoming_recipients(letter_id, is_archived);
-- Add indexes for efficient archiving queries on letter_outgoing_recipients
-- Note: letter_outgoing_recipients uses user_id and department_id
CREATE INDEX IF NOT EXISTS idx_letter_outgoing_recipients_archived
ON letter_outgoing_recipients(is_archived, user_id, letter_id)
WHERE is_archived = false;
CREATE INDEX IF NOT EXISTS idx_letter_outgoing_recipients_user_archived
ON letter_outgoing_recipients(user_id, is_archived, letter_id);
CREATE INDEX IF NOT EXISTS idx_letter_outgoing_recipients_letter_archived
ON letter_outgoing_recipients(letter_id, is_archived);
-- Add composite index for filtering non-archived letters by department
CREATE INDEX IF NOT EXISTS idx_letter_incoming_recipients_dept_archived
ON letter_incoming_recipients(recipient_department_id, is_archived, letter_id)
WHERE is_archived = false;