mirror of
https://github.com/block/buzz.git
synced 2026-10-27 12:40:30 +00:00
26 lines
1.4 KiB
SQL
26 lines
1.4 KiB
SQL
-- ── Workflows ─────────────────────────────────────────────────────────────────
|
|
-- Conformance: "Workflows, runs, approvals, webhooks, schedules". Definition's
|
|
-- community fixed at create from req.community; runs/approvals inherit it.
|
|
|
|
CREATE TABLE workflows (
|
|
community_id UUID NOT NULL REFERENCES communities(id),
|
|
id UUID NOT NULL DEFAULT gen_random_uuid(),
|
|
name VARCHAR(255) NOT NULL,
|
|
owner_pubkey BYTEA NOT NULL,
|
|
channel_id UUID,
|
|
definition JSONB NOT NULL,
|
|
definition_hash BYTEA NOT NULL,
|
|
status workflow_status NOT NULL DEFAULT 'active',
|
|
enabled BOOLEAN NOT NULL DEFAULT TRUE,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
PRIMARY KEY (community_id, id),
|
|
FOREIGN KEY (community_id, owner_pubkey) REFERENCES users (community_id, pubkey),
|
|
FOREIGN KEY (community_id, channel_id) REFERENCES channels (community_id, id)
|
|
);
|
|
|
|
CREATE INDEX idx_workflows_channel_active ON workflows (community_id, channel_id, status, enabled);
|
|
-- Scheduler scans enabled schedule workflows; community_id returned per row so
|
|
-- side effects run under the owning tenant's context (Lane0 contract §4a.5).
|
|
CREATE INDEX idx_workflows_enabled ON workflows (enabled, status) WHERE enabled;
|