Files
gochat/migrations/000018_add_conversation_message_parity_fields.up.sql
T

36 lines
2.2 KiB
SQL

ALTER TABLE conversations ADD COLUMN IF NOT EXISTS display_id INTEGER;
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS contact_inbox_id INTEGER;
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS team_id INTEGER;
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS campaign_id INTEGER;
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS sla_policy_id INTEGER;
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS snoozed_until BIGINT;
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS additional_attributes JSONB DEFAULT '{}';
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS custom_attributes JSONB DEFAULT '{}';
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS agent_last_seen_at BIGINT;
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS assignee_last_seen_at BIGINT;
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS contact_last_seen_at BIGINT;
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS waiting_since BIGINT;
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS last_activity_at BIGINT;
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS first_reply_created_at BIGINT;
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS muted BOOLEAN DEFAULT FALSE;
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS resolved_at TIMESTAMP WITH TIME ZONE;
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS resumed_at TIMESTAMP WITH TIME ZONE;
ALTER TABLE messages ADD COLUMN IF NOT EXISTS status VARCHAR(50) DEFAULT 'sent';
ALTER TABLE messages ADD COLUMN IF NOT EXISTS echo_id VARCHAR(255);
ALTER TABLE messages ADD COLUMN IF NOT EXISTS content_attributes JSONB DEFAULT '{}';
ALTER TABLE messages ADD COLUMN IF NOT EXISTS additional_attributes JSONB DEFAULT '{}';
ALTER TABLE messages ADD COLUMN IF NOT EXISTS external_source_ids JSONB DEFAULT '{}';
UPDATE conversations
SET display_id = numbered.display_id
FROM (
SELECT id, ROW_NUMBER() OVER (PARTITION BY account_id ORDER BY id)::integer AS display_id
FROM conversations
WHERE display_id IS NULL OR display_id = 0
) AS numbered
WHERE conversations.id = numbered.id;
CREATE INDEX IF NOT EXISTS idx_conversations_account_display_id ON conversations(account_id, display_id) WHERE deleted_at IS NULL;
CREATE INDEX IF NOT EXISTS idx_messages_echo_id ON messages(echo_id) WHERE deleted_at IS NULL;