CREATE TABLE IF NOT EXISTS settings ( key TEXT PRIMARY KEY, value TEXT NOT NULL, updated_at TEXT NOT NULL DEFAULT (datetime('now')) ); CREATE TABLE IF NOT EXISTS oauth_states ( state TEXT PRIMARY KEY, expires_at INTEGER NOT NULL ); CREATE TABLE IF NOT EXISTS oauth_tokens ( provider TEXT PRIMARY KEY, refresh_token_enc TEXT NOT NULL, account_email TEXT NOT NULL, updated_at TEXT NOT NULL DEFAULT (datetime('now')) ); CREATE TABLE IF NOT EXISTS bookings ( id TEXT PRIMARY KEY, name TEXT NOT NULL, email TEXT NOT NULL, phone TEXT, message TEXT, start_time TEXT NOT NULL, end_time TEXT NOT NULL, duration_minutes INTEGER NOT NULL, timezone TEXT NOT NULL, meeting_mode TEXT NOT NULL, google_event_id TEXT, meet_url TEXT, status TEXT NOT NULL DEFAULT 'pending', created_at TEXT NOT NULL DEFAULT (datetime('now')) ); CREATE INDEX IF NOT EXISTS idx_bookings_start ON bookings(start_time); CREATE INDEX IF NOT EXISTS idx_bookings_status ON bookings(status); CREATE TABLE IF NOT EXISTS slot_locks ( slot_key TEXT PRIMARY KEY, booking_id TEXT NOT NULL, expires_at INTEGER NOT NULL ); CREATE INDEX IF NOT EXISTS idx_slot_locks_expiry ON slot_locks(expires_at); CREATE TABLE IF NOT EXISTS rate_limits ( key TEXT PRIMARY KEY, count INTEGER NOT NULL DEFAULT 1, reset_at INTEGER NOT NULL ); CREATE INDEX IF NOT EXISTS idx_rate_limits_reset ON rate_limits(reset_at);