SQL

CREATE TABLE deliveries  (
  id TEXT PRIMARY KEY,
  delivery_fp TEXT NOT NULL UNIQUE,
  -- idempotency: hash of (channel, thread, kind, day, payload key)
  channel TEXT NOT NULL,
  -- 'slack'|'email'|'sms' etc.
  destination TEXT NOT NULL,
  -- e.g. slack channel id,
  email address,
  phone
  thread_id TEXT,
  -- slack thread ts or equivalent
  kind TEXT NOT NULL,
  -- 'nudge'|'plan_view'|'approval_request'|'approval_result'|'answer'
  priority INTEGER NOT NULL DEFAULT 0,
  status TEXT NOT NULL CHECK (status IN ('queued','sending','sent','failed','dead')),
  payload TEXT NOT NULL,
  -- JSON: blocks/text/refs (rendered already; do NOT LLM here)
  related_episode_id TEXT,
  related_event_id TEXT,
  related_proposal_id TEXT,
  related_action_id TEXT,
  related_approval_id TEXT,
  last_error TEXT,
  attempt_count INTEGER NOT NULL DEFAULT 0,
  send_after TEXT,
  -- for scheduled nudges
  sent_at TEXT,
  created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')),
  updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')),
  FOREIGN KEY (related_episode_id) REFERENCES episodes(id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED,
  FOREIGN KEY (related_event_id) REFERENCES events(id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED,
  FOREIGN KEY (related_proposal_id) REFERENCES proposals(id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED,
  FOREIGN KEY (related_action_id) REFERENCES actions(id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED,
  FOREIGN KEY (related_approval_id) REFERENCES approvals(id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED
)

+ Add column

Columns

Column Data type Allow null Primary key Actions
id TEXT Rename | Drop
delivery_fp TEXT Rename | Drop
channel TEXT Rename | Drop
destination TEXT Rename | Drop
thread_id TEXT Rename | Drop
kind TEXT Rename | Drop
priority INTEGER Rename | Drop
status TEXT Rename | Drop
payload TEXT Rename | Drop
related_episode_id TEXT Rename | Drop
related_event_id TEXT Rename | Drop
related_proposal_id TEXT Rename | Drop
related_action_id TEXT Rename | Drop
related_approval_id TEXT Rename | Drop
last_error TEXT Rename | Drop
attempt_count INTEGER Rename | Drop
send_after TEXT Rename | Drop
sent_at TEXT Rename | Drop
created_at TEXT Rename | Drop
updated_at TEXT Rename | Drop

Foreign Keys

Column Destination
related_approval_id approvals.id
related_action_id actions.id
related_proposal_id proposals.id
related_event_id events.id
related_episode_id episodes.id

+ Add index

Indexes

Name Columns Unique SQL Drop?
idx_deliveries_status_after
  • status
  • send_after
SQL
CREATE INDEX idx_deliveries_status_after
ON deliveries(status, send_after)
Drop
idx_deliveries_status_updated
  • status
  • updated_at
SQL
CREATE INDEX idx_deliveries_status_updated
ON deliveries(status, updated_at DESC)
Drop
sqlite_autoindex_deliveries_1 id SQL
-- no sql found --
Drop
sqlite_autoindex_deliveries_2 delivery_fp SQL
-- no sql found --
Drop