Rustelo/resources/user-dashboard/migrations/007_message_status_postgres.sql

20 lines
806 B
MySQL
Raw Normal View History

2026-07-18 20:16:16 +01:00
-- 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';