CREATE TABLE IF NOT EXISTS push_subscriptions ( id TEXT PRIMARY KEY, user_id TEXT NOT NULL, endpoint TEXT NOT NULL, p256dh TEXT NOT NULL, auth TEXT NOT NULL, created_at TIMESTAMP DEFAULT NOW() NOT NULL ); CREATE TABLE IF NOT EXISTS notification_preferences ( user_id TEXT PRIMARY KEY, push_on_answer BOOLEAN DEFAULT true, email_on_deep_research BOOLEAN DEFAULT false, reminders JSONB DEFAULT '[]'::jsonb, updated_at TIMESTAMP DEFAULT NOW() NOT NULL ); CREATE TABLE IF NOT EXISTS reminders ( id TEXT PRIMARY KEY, user_id TEXT NOT NULL, thread_id TEXT, query TEXT, remind_at TIMESTAMP NOT NULL, created_at TIMESTAMP DEFAULT NOW() NOT NULL, sent_at TIMESTAMP ); CREATE INDEX IF NOT EXISTS idx_push_subscriptions_user_id ON push_subscriptions(user_id); CREATE INDEX IF NOT EXISTS idx_reminders_user_id ON reminders(user_id); CREATE INDEX IF NOT EXISTS idx_reminders_remind_at ON reminders(remind_at) WHERE sent_at IS NULL;