2026-04-01 00:58:42 +08:00
|
|
|
CREATE TABLE quota_reservations (
|
|
|
|
|
id BIGSERIAL PRIMARY KEY,
|
|
|
|
|
tenant_id BIGINT NOT NULL REFERENCES tenants(id),
|
|
|
|
|
quota_type VARCHAR(50) NOT NULL,
|
|
|
|
|
resource_type VARCHAR(50) NOT NULL,
|
|
|
|
|
resource_id BIGINT NOT NULL,
|
|
|
|
|
reserved_amount INT NOT NULL,
|
|
|
|
|
consumed_amount INT NOT NULL DEFAULT 0,
|
|
|
|
|
refunded_amount INT NOT NULL DEFAULT 0,
|
|
|
|
|
status VARCHAR(20) NOT NULL DEFAULT 'pending',
|
|
|
|
|
expire_at TIMESTAMPTZ NOT NULL,
|
|
|
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
2026-05-12 01:55:29 +08:00
|
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
|
|
|
CONSTRAINT chk_quota_reservation_status
|
|
|
|
|
CHECK (status IN ('pending', 'confirmed', 'refunded', 'reset'))
|
2026-04-01 00:58:42 +08:00
|
|
|
);
|
|
|
|
|
CREATE INDEX idx_quota_reservation_tenant_status ON quota_reservations(tenant_id, status);
|