mirror of
https://github.com/block/buzz.git
synced 2026-10-27 04:30:52 +00:00
30 lines
1.4 KiB
SQL
30 lines
1.4 KiB
SQL
-- ── Workflow approvals ────────────────────────────────────────────────────────
|
|
-- token-hash lookup scoped: approval token grants cannot act on another
|
|
-- community's same hash (conformance).
|
|
|
|
CREATE TABLE workflow_approvals (
|
|
community_id UUID NOT NULL REFERENCES communities(id),
|
|
token BYTEA NOT NULL,
|
|
workflow_id UUID NOT NULL,
|
|
run_id UUID NOT NULL,
|
|
step_id VARCHAR(64) NOT NULL,
|
|
step_index INT NOT NULL,
|
|
approver_spec TEXT NOT NULL,
|
|
status approval_status NOT NULL DEFAULT 'pending',
|
|
approver_pubkey BYTEA,
|
|
note TEXT,
|
|
granted_at TIMESTAMPTZ,
|
|
denied_at TIMESTAMPTZ,
|
|
expires_at TIMESTAMPTZ NOT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
PRIMARY KEY (community_id, token),
|
|
FOREIGN KEY (community_id, workflow_id)
|
|
REFERENCES workflows (community_id, id) ON DELETE CASCADE,
|
|
FOREIGN KEY (community_id, run_id)
|
|
REFERENCES workflow_runs (community_id, id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE INDEX idx_workflow_approvals_workflow ON workflow_approvals (community_id, workflow_id);
|
|
CREATE INDEX idx_workflow_approvals_run ON workflow_approvals (community_id, run_id);
|
|
CREATE INDEX idx_workflow_approvals_status ON workflow_approvals (community_id, status);
|