Files

17 lines
1020 B
SQL
Raw Permalink Normal View History

CREATE TABLE IF NOT EXISTS workbench_usage_quotas (
id varchar(36) PRIMARY KEY,
tenant_id bigint NOT NULL,
user_id varchar(36) NOT NULL,
period varchar(10) NOT NULL CHECK (period IN ('daily','monthly')),
token_limit bigint NOT NULL DEFAULT 0 CHECK (token_limit BETWEEN 0 AND 1000000000000),
points_limit bigint NOT NULL DEFAULT 0 CHECK (points_limit BETWEEN 0 AND 1000000000000),
storage_limit_bytes bigint NOT NULL DEFAULT 0 CHECK (storage_limit_bytes BETWEEN 0 AND 1000000000000),
concurrent_limit integer NOT NULL DEFAULT 0 CHECK (concurrent_limit BETWEEN 0 AND 10000),
warning_ratio double precision NOT NULL DEFAULT 0.8 CHECK (warning_ratio BETWEEN 0 AND 1),
overage_policy varchar(12) NOT NULL DEFAULT 'warn' CHECK (overage_policy IN ('warn','soft_limit','hard_limit')),
enabled boolean NOT NULL DEFAULT true,
updated_at timestamptz NOT NULL DEFAULT now(),
UNIQUE (tenant_id,user_id,period)
);
CREATE INDEX IF NOT EXISTS wb_holds_quota ON workbench_balance_holds(tenant_id,user_id,status,created_at);