31 lines
1.1 KiB
PL/PgSQL
31 lines
1.1 KiB
PL/PgSQL
BEGIN;
|
|
|
|
SET ROLE capability_role;
|
|
|
|
CREATE TABLE IF NOT EXISTS capability.cognitive_admission_counters (
|
|
policy_id TEXT PRIMARY KEY,
|
|
window_start_unix_millis BIGINT NOT NULL,
|
|
accepted_count INTEGER NOT NULL DEFAULT 0,
|
|
concurrent_count INTEGER NOT NULL DEFAULT 0,
|
|
updated_at_unix_millis BIGINT NOT NULL,
|
|
CHECK (policy_id <> ''), CHECK (window_start_unix_millis > 0),
|
|
CHECK (accepted_count >= 0), CHECK (concurrent_count >= 0),
|
|
CHECK (updated_at_unix_millis > 0)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS capability.cognitive_admission_leases (
|
|
lease_id TEXT PRIMARY KEY,
|
|
policy_id TEXT NOT NULL REFERENCES capability.cognitive_admission_counters(policy_id),
|
|
state TEXT NOT NULL,
|
|
expires_at_unix_millis BIGINT NOT NULL,
|
|
created_at_unix_millis BIGINT NOT NULL,
|
|
CHECK (lease_id <> ''), CHECK (state IN ('ACTIVE','RELEASED','EXPIRED')),
|
|
CHECK (expires_at_unix_millis > 0), CHECK (created_at_unix_millis > 0)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS cognitive_admission_lease_expiry_idx
|
|
ON capability.cognitive_admission_leases(policy_id, state, expires_at_unix_millis);
|
|
|
|
RESET ROLE;
|
|
COMMIT;
|