24 lines
955 B
SQL
24 lines
955 B
SQL
CREATE TABLE IF NOT EXISTS gateway_rate_limit_reservations (
|
|
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
task_id uuid NOT NULL REFERENCES gateway_tasks(id) ON DELETE CASCADE,
|
|
attempt_id uuid REFERENCES gateway_task_attempts(id) ON DELETE SET NULL,
|
|
scope_type text NOT NULL,
|
|
scope_key text NOT NULL,
|
|
metric text NOT NULL,
|
|
window_start timestamptz NOT NULL,
|
|
limit_value numeric NOT NULL,
|
|
reserved_amount numeric NOT NULL DEFAULT 0,
|
|
actual_amount numeric NOT NULL DEFAULT 0,
|
|
status text NOT NULL DEFAULT 'reserved',
|
|
reason text,
|
|
created_at timestamptz NOT NULL DEFAULT now(),
|
|
updated_at timestamptz NOT NULL DEFAULT now(),
|
|
finalized_at timestamptz
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_rate_limit_reservations_active
|
|
ON gateway_rate_limit_reservations(status, scope_type, scope_key, metric, window_start);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_rate_limit_reservations_task
|
|
ON gateway_rate_limit_reservations(task_id, attempt_id);
|