CREATE TABLE IF NOT EXISTS inbox ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id TEXT NOT NULL REFERENCES users(id), message_id TEXT NOT NULL REFERENCES messages(id), channel_id TEXT NOT NULL, trigger TEXT NOT NULL CHECK (trigger IN ('mention', 'watch', 'broadcast')), acked_at TEXT, created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')) ); CREATE INDEX IF NOT EXISTS idx_inbox_user_unacked ON inbox(user_id, acked_at);