SQL
CREATE TABLE approvals (
id TEXT PRIMARY KEY,
status TEXT NOT NULL CHECK (status IN (
'open','approved','rejected','executing','needs_followup','failed','applied'
)),
action_id TEXT,
-- canonical FK to actions
proposal_id TEXT,
thread_id TEXT,
channel_id TEXT,
user_id TEXT,
dedupe_key TEXT,
action_fp TEXT,
summary TEXT,
rationale TEXT,
risk TEXT,
tier TEXT,
event_id TEXT,
decided_by TEXT,
decided_at TEXT,
executing_by TEXT,
executing_at TEXT,
applied_at TEXT,
pending_id TEXT,
error TEXT,
delivery_state TEXT,
action_idempotency_key TEXT,
last_delivered_at TEXT,
last_nudged_at TEXT,
version INTEGER NOT NULL DEFAULT 1,
attempt_count INTEGER NOT NULL DEFAULT 0 CHECK (attempt_count >= 0),
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')),
CHECK (created_at <= updated_at),
FOREIGN KEY (event_id) REFERENCES events(id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED,
FOREIGN KEY (action_id) REFERENCES actions(id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED
)
Columns
| Column | Data type | Allow null | Primary key | Actions |
|---|---|---|---|---|
id |
TEXT |
✓ | ✓ | Rename | Drop |
status |
TEXT |
Rename | Drop | ||
action_id |
TEXT |
✓ | Rename | Drop | |
proposal_id |
TEXT |
✓ | Rename | Drop | |
thread_id |
TEXT |
✓ | Rename | Drop | |
channel_id |
TEXT |
✓ | Rename | Drop | |
user_id |
TEXT |
✓ | Rename | Drop | |
dedupe_key |
TEXT |
✓ | Rename | Drop | |
action_fp |
TEXT |
✓ | Rename | Drop | |
summary |
TEXT |
✓ | Rename | Drop | |
rationale |
TEXT |
✓ | Rename | Drop | |
risk |
TEXT |
✓ | Rename | Drop | |
tier |
TEXT |
✓ | Rename | Drop | |
event_id |
TEXT |
✓ | Rename | Drop | |
decided_by |
TEXT |
✓ | Rename | Drop | |
decided_at |
TEXT |
✓ | Rename | Drop | |
executing_by |
TEXT |
✓ | Rename | Drop | |
executing_at |
TEXT |
✓ | Rename | Drop | |
applied_at |
TEXT |
✓ | Rename | Drop | |
pending_id |
TEXT |
✓ | Rename | Drop | |
error |
TEXT |
✓ | Rename | Drop | |
delivery_state |
TEXT |
✓ | Rename | Drop | |
action_idempotency_key |
TEXT |
✓ | Rename | Drop | |
last_delivered_at |
TEXT |
✓ | Rename | Drop | |
last_nudged_at |
TEXT |
✓ | Rename | Drop | |
version |
INTEGER |
Rename | Drop | ||
attempt_count |
INTEGER |
Rename | Drop | ||
created_at |
TEXT |
Rename | Drop | ||
updated_at |
TEXT |
Rename | Drop |
Foreign Keys
| Column | Destination |
|---|---|
action_id |
actions.id |
event_id |
events.id |
Indexes
| Name | Columns | Unique | SQL | Drop? |
|---|---|---|---|---|
| idx_approvals_action_fp |
action_fp
|
SQL | Drop | |
| idx_approvals_action_idk |
action_idempotency_key
|
SQL | Drop | |
| idx_approvals_action_status_updated |
|
SQL | Drop | |
| idx_approvals_dedupe_key |
dedupe_key
|
SQL | Drop | |
| idx_approvals_proposal |
|
SQL | Drop | |
| idx_approvals_status |
status
|
SQL | Drop | |
| idx_approvals_status_updated_action |
|
SQL | Drop | |
| idx_approvals_thread_status_created |
|
SQL | Drop | |
| idx_approvals_thread_status_updated |
|
SQL | Drop | |
| sqlite_autoindex_approvals_1 |
id
|
✓ | SQL | Drop |