26 lines
1.1 KiB
SQL
26 lines
1.1 KiB
SQL
|
|
-- Migration: Add system_messages table for system notifications
|
||
|
|
-- Date: 2026-06-13
|
||
|
|
-- Description: Create system_messages table to support sending notifications to users
|
||
|
|
|
||
|
|
CREATE TABLE IF NOT EXISTS system_messages (
|
||
|
|
message_id VARCHAR(36) PRIMARY KEY,
|
||
|
|
title VARCHAR(255) NOT NULL,
|
||
|
|
content TEXT NOT NULL,
|
||
|
|
message_type VARCHAR(32) NOT NULL DEFAULT 'info',
|
||
|
|
target_user_id VARCHAR(36),
|
||
|
|
is_read BOOLEAN NOT NULL DEFAULT FALSE,
|
||
|
|
created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
|
||
|
|
read_at TIMESTAMP WITHOUT TIME ZONE
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX idx_system_messages_target_user ON system_messages(target_user_id);
|
||
|
|
CREATE INDEX idx_system_messages_is_read ON system_messages(is_read);
|
||
|
|
CREATE INDEX idx_system_messages_created_at ON system_messages(created_at);
|
||
|
|
CREATE INDEX idx_system_messages_type ON system_messages(message_type);
|
||
|
|
|
||
|
|
-- Notes:
|
||
|
|
-- - target_user_id is NULL for broadcast messages (sent to all users)
|
||
|
|
-- - target_user_id references users.user_id for user-specific messages
|
||
|
|
-- - message_type values: 'info', 'warning', 'error', 'success'
|
||
|
|
-- - is_read tracks whether the message has been read by the target user
|