17 lines
1020 B
SQL
17 lines
1020 B
SQL
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);
|