Files
gochat/migrations/000003_add_rate_limit_state.up.sql
T
2026-06-04 15:44:48 +08:00

16 lines
676 B
SQL

-- GoChat Rate Limit State Table
-- Stores rate limit counters per client IP for sliding window enforcement.
-- Reference: Chatwoot Rack::Attack throttle configuration
CREATE TABLE IF NOT EXISTS rate_limit_states (
id SERIAL PRIMARY KEY,
key VARCHAR(255) NOT NULL UNIQUE,
count INTEGER NOT NULL DEFAULT 0,
window_start TIMESTAMP WITH TIME ZONE NOT NULL,
expires_at TIMESTAMP WITH TIME ZONE NOT NULL,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
CREATE INDEX idx_rate_limit_states_key ON rate_limit_states(key);
CREATE INDEX idx_rate_limit_states_expires ON rate_limit_states(expires_at);