-- ========================================== -- Chat Switchboard — 020 Multi-Replica HA -- ========================================== -- Shared state tables for multi-replica operation. -- v0.32.0: ws_tickets, rate_limit_counters. -- SQLite parity — functional for single-process test coverage. -- ========================================== -- ========================================= -- WEBSOCKET TICKETS -- ========================================= CREATE TABLE IF NOT EXISTS ws_tickets ( id TEXT PRIMARY KEY, user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE, expires_at TEXT NOT NULL ); CREATE INDEX IF NOT EXISTS idx_ws_tickets_expires ON ws_tickets (expires_at); -- ========================================= -- RATE LIMIT COUNTERS -- ========================================= CREATE TABLE IF NOT EXISTS rate_limit_counters ( key TEXT NOT NULL, window_start TEXT NOT NULL, tokens REAL NOT NULL DEFAULT 0, PRIMARY KEY (key, window_start) ); CREATE INDEX IF NOT EXISTS idx_rate_limit_counters_window ON rate_limit_counters (window_start);