-- ========================================== -- Chat Switchboard — 011 Notifications -- ========================================== -- Notification delivery and per-user preferences. -- ICD §12 (Notifications) -- ========================================== -- ========================================= -- NOTIFICATIONS -- ========================================= CREATE TABLE IF NOT EXISTS notifications ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE, type VARCHAR(50) NOT NULL, title VARCHAR(255) NOT NULL, body TEXT DEFAULT '', resource_type VARCHAR(50), resource_id UUID, is_read BOOLEAN DEFAULT false, created_at TIMESTAMPTZ DEFAULT NOW() ); CREATE INDEX IF NOT EXISTS idx_notifications_user_unread ON notifications(user_id, is_read, created_at DESC); CREATE INDEX IF NOT EXISTS idx_notifications_user_created ON notifications(user_id, created_at DESC); -- ========================================= -- NOTIFICATION PREFERENCES -- ========================================= CREATE TABLE IF NOT EXISTS notification_preferences ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE, type VARCHAR(50) NOT NULL, in_app BOOLEAN NOT NULL DEFAULT true, email BOOLEAN NOT NULL DEFAULT false, UNIQUE(user_id, type) ); CREATE INDEX IF NOT EXISTS idx_notification_prefs_user ON notification_preferences(user_id);