44 lines
1.5 KiB
PL/PgSQL
44 lines
1.5 KiB
PL/PgSQL
BEGIN;
|
|
|
|
SET ROLE work_role;
|
|
|
|
CREATE TABLE IF NOT EXISTS work.agent_dispatch_intents (
|
|
dispatch_id TEXT PRIMARY KEY,
|
|
idempotency_key TEXT NOT NULL UNIQUE,
|
|
delegation_id TEXT NOT NULL,
|
|
run_id TEXT NOT NULL,
|
|
implementation_id TEXT NOT NULL,
|
|
implementation_revision BIGINT NOT NULL,
|
|
source_revision TEXT NOT NULL,
|
|
worktree_id TEXT NOT NULL,
|
|
verification_plan_ref TEXT NOT NULL,
|
|
created_at_unix_millis BIGINT NOT NULL,
|
|
CHECK (dispatch_id <> ''), CHECK (idempotency_key <> ''), CHECK (delegation_id <> ''),
|
|
CHECK (run_id <> ''), CHECK (implementation_id <> ''), CHECK (implementation_revision > 0),
|
|
CHECK (source_revision <> ''), CHECK (worktree_id <> ''), CHECK (verification_plan_ref <> ''),
|
|
CHECK (created_at_unix_millis > 0)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS work.agent_leases (
|
|
lease_id TEXT PRIMARY KEY,
|
|
run_id TEXT NOT NULL UNIQUE,
|
|
worker_id TEXT NOT NULL,
|
|
fencing_token BIGINT NOT NULL,
|
|
state TEXT NOT NULL,
|
|
acquired_at_unix_millis BIGINT NOT NULL,
|
|
expires_at_unix_millis BIGINT NOT NULL,
|
|
CHECK (lease_id <> ''), CHECK (run_id <> ''), CHECK (worker_id <> ''),
|
|
CHECK (fencing_token > 0), CHECK (state IN ('ACTIVE','EXPIRED')),
|
|
CHECK (acquired_at_unix_millis > 0), CHECK (expires_at_unix_millis > acquired_at_unix_millis)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS work.agent_callback_heads (
|
|
run_id TEXT PRIMARY KEY,
|
|
last_sequence BIGINT NOT NULL DEFAULT 0,
|
|
updated_at_unix_millis BIGINT NOT NULL,
|
|
CHECK (run_id <> ''), CHECK (last_sequence >= 0), CHECK (updated_at_unix_millis > 0)
|
|
);
|
|
|
|
RESET ROLE;
|
|
COMMIT;
|