br-office-suite/database/migrations/037_agenda_item_parent_child_followups.sql
2026-05-10 10:46:05 +02:00

46 lines
2.0 KiB
SQL

ALTER TABLE meeting_agenda_item
ADD COLUMN IF NOT EXISTS parent_agenda_item_id BIGINT REFERENCES meeting_agenda_item(id) ON DELETE SET NULL;
ALTER TABLE meeting_agenda_item
ADD COLUMN IF NOT EXISTS root_agenda_item_id BIGINT REFERENCES meeting_agenda_item(id) ON DELETE SET NULL;
ALTER TABLE meeting_agenda_item
ADD COLUMN IF NOT EXISTS follow_up_type VARCHAR(30);
ALTER TABLE meeting_agenda_item
ADD COLUMN IF NOT EXISTS follow_up_note TEXT;
ALTER TABLE meeting_agenda_item
ADD COLUMN IF NOT EXISTS follow_up_created_from_meeting_id BIGINT REFERENCES meeting(id) ON DELETE SET NULL;
ALTER TABLE meeting_agenda_item
ADD COLUMN IF NOT EXISTS follow_up_created_from_agenda_item_id BIGINT REFERENCES meeting_agenda_item(id) ON DELETE SET NULL;
ALTER TABLE meeting_agenda_item
ADD COLUMN IF NOT EXISTS follow_up_created_at TIMESTAMPTZ;
ALTER TABLE meeting_agenda_item
ADD COLUMN IF NOT EXISTS follow_up_created_by BIGINT REFERENCES app_user(id) ON DELETE SET NULL;
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1
FROM pg_constraint
WHERE conname = 'chk_meeting_agenda_item_follow_up_type'
AND conrelid = 'meeting_agenda_item'::regclass
) THEN
ALTER TABLE meeting_agenda_item
ADD CONSTRAINT chk_meeting_agenda_item_follow_up_type
CHECK (follow_up_type IS NULL OR follow_up_type IN ('rueckfrage', 'klaerung', 'bemerkung'));
END IF;
END $$;
ALTER TABLE meeting_agenda_item_return_log
ADD COLUMN IF NOT EXISTS follow_up_agenda_item_id BIGINT REFERENCES meeting_agenda_item(id) ON DELETE SET NULL;
CREATE INDEX IF NOT EXISTS idx_meeting_agenda_item_parent ON meeting_agenda_item(parent_agenda_item_id);
CREATE INDEX IF NOT EXISTS idx_meeting_agenda_item_root ON meeting_agenda_item(root_agenda_item_id);
CREATE INDEX IF NOT EXISTS idx_meeting_agenda_item_follow_up_source ON meeting_agenda_item(follow_up_created_from_meeting_id, follow_up_created_from_agenda_item_id);
CREATE INDEX IF NOT EXISTS idx_meeting_agenda_item_return_log_follow_up ON meeting_agenda_item_return_log(follow_up_agenda_item_id);