CREATE TABLE notifications ( id TEXT PRIMARY KEY, user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE, title TEXT NOT NULL, body TEXT, kind TEXT NOT NULL, related_submission_id TEXT REFERENCES promotion_submissions(id) ON DELETE CASCADE, status TEXT NOT NULL DEFAULT 'unread' CHECK (status IN ('unread', 'viewed')), created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')), viewed_at TEXT ); CREATE INDEX notifications_user_idx ON notifications(user_id, created_at DESC); CREATE INDEX notifications_unread_idx ON notifications(user_id) WHERE status = 'unread';