SQL

CREATE TABLE signals  (
  id TEXT PRIMARY KEY,
  event_id TEXT NOT NULL UNIQUE,
  -- NEW: 1:1 backing event for replayability
  watcher_id TEXT,
  -- NEW: optional provenance hook
  signal_type TEXT NOT NULL,
  value TEXT NOT NULL,
  threshold TEXT,
  direction TEXT,
  severity TEXT,
  window TEXT,
  source TEXT NOT NULL,
  reason_trace TEXT,
  dedupe_key TEXT NOT NULL,
  throttle_s INTEGER DEFAULT 0,
  created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ','now')),
  FOREIGN KEY (event_id) REFERENCES events(id) ON DELETE RESTRICT DEFERRABLE INITIALLY DEFERRED,
  FOREIGN KEY (watcher_id) REFERENCES watchers(id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED
)

+ Add column

Columns

Column Data type Allow null Primary key Actions
id TEXT Rename | Drop
event_id TEXT Rename | Drop
watcher_id TEXT Rename | Drop
signal_type TEXT Rename | Drop
value TEXT Rename | Drop
threshold TEXT Rename | Drop
direction TEXT Rename | Drop
severity TEXT Rename | Drop
window TEXT Rename | Drop
source TEXT Rename | Drop
reason_trace TEXT Rename | Drop
dedupe_key TEXT Rename | Drop
throttle_s INTEGER Rename | Drop
created_at TEXT Rename | Drop

Foreign Keys

Column Destination
watcher_id watchers.id
event_id events.id

+ Add index

Indexes

Name Columns Unique SQL Drop?
idx_signals_created_at created_at SQL
CREATE INDEX idx_signals_created_at
ON signals(created_at DESC)
Drop
idx_signals_dedupe dedupe_key SQL
CREATE UNIQUE INDEX idx_signals_dedupe
ON signals (dedupe_key)
Drop
idx_signals_source_at
  • source
  • created_at
SQL
CREATE INDEX idx_signals_source_at
ON signals (source, created_at)
Drop
idx_signals_type_at
  • signal_type
  • created_at
SQL
CREATE INDEX idx_signals_type_at
ON signals (signal_type, created_at)
Drop
idx_signals_watcher_at
  • watcher_id
  • created_at
SQL
CREATE INDEX idx_signals_watcher_at
ON signals (watcher_id, created_at)
Drop
sqlite_autoindex_signals_1 id SQL
-- no sql found --
Drop
sqlite_autoindex_signals_2 event_id SQL
-- no sql found --
Drop