-- Migration: 007 – Enhance user_messages with status lifecycle and timestamps -- Database: PostgreSQL -- -- Adds: status (sent | read | deleted), received_at, deleted_at -- Existing rows are backfilled to is_read=true → status='read', else status='sent'. ALTER TABLE user_messages ADD COLUMN IF NOT EXISTS status TEXT NOT NULL DEFAULT 'sent', ADD COLUMN IF NOT EXISTS received_at TIMESTAMPTZ, ADD COLUMN IF NOT EXISTS deleted_at TIMESTAMPTZ; -- Backfill: rows already marked is_read should be 'read' with received_at = created_at. UPDATE user_messages SET status = 'read', received_at = created_at WHERE is_read = true AND status = 'sent'; CREATE INDEX IF NOT EXISTS idx_user_messages_status ON user_messages(user_id, status) WHERE status != 'deleted';