16 lines
676 B
SQL
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); |