You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
1.4 KiB
SQL
33 lines
1.4 KiB
SQL
-- Per-provider rate limit configuration (admin-managed).
|
|
-- Controls how many requests per time window are allowed globally per provider.
|
|
|
|
CREATE TABLE admin_rate_limits (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
provider_name VARCHAR(50) NOT NULL UNIQUE REFERENCES admin_providers(provider_name) ON DELETE CASCADE,
|
|
max_requests INTEGER NOT NULL DEFAULT 30,
|
|
time_window_seconds INTEGER NOT NULL DEFAULT 60,
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
-- Seed default rate limits for each provider
|
|
INSERT INTO admin_rate_limits (provider_name, max_requests, time_window_seconds) VALUES
|
|
('gemini', 29, 60),
|
|
('openai', 50, 60),
|
|
('anthropic', 40, 60);
|
|
|
|
-- Audit log for admin actions (provider changes, rate limit updates, role changes).
|
|
-- Provides traceability for all admin mutations.
|
|
|
|
CREATE TABLE audit_log (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
admin_user_id UUID REFERENCES users(id) ON DELETE SET NULL,
|
|
action VARCHAR(100) NOT NULL,
|
|
target_type VARCHAR(50),
|
|
target_id VARCHAR(255),
|
|
details JSONB,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
CREATE INDEX idx_audit_log_created_at ON audit_log(created_at DESC);
|
|
CREATE INDEX idx_audit_log_admin_user ON audit_log(admin_user_id);
|