CREATE TABLE IF NOT EXISTS trigger_execution_steps (
execution_id TEXT NOT NULL REFERENCES trigger_executions(execution_id) ON DELETE CASCADE,
sequence INTEGER NOT NULL,
node_id TEXT,
kind TEXT NOT NULL,
result_json TEXT,
writes_json TEXT NOT NULL DEFAULT '{}',
instructions INTEGER NOT NULL,
created_at INTEGER NOT NULL,
PRIMARY KEY(execution_id, sequence)
);
CREATE INDEX IF NOT EXISTS trigger_executions_history_idx
ON trigger_executions(started_at DESC, execution_id DESC);
CREATE INDEX IF NOT EXISTS trigger_executions_resume_idx
ON trigger_executions(status, updated_at);
CREATE TABLE IF NOT EXISTS trigger_event_capture_sessions (
capture_id TEXT PRIMARY KEY,
created_by TEXT NOT NULL,
event_types_json TEXT NOT NULL,
expires_at INTEGER NOT NULL,
maximum_samples INTEGER NOT NULL CHECK (maximum_samples BETWEEN 1 AND 500),
created_at INTEGER NOT NULL
);
CREATE TABLE IF NOT EXISTS trigger_event_samples (
sample_id TEXT PRIMARY KEY,
capture_id TEXT NOT NULL REFERENCES trigger_event_capture_sessions(capture_id) ON DELETE CASCADE,
event_type TEXT NOT NULL,
context_json TEXT NOT NULL,
captured_at INTEGER NOT NULL
);
CREATE INDEX IF NOT EXISTS trigger_event_samples_capture_idx
ON trigger_event_samples(capture_id, captured_at DESC);
CREATE TABLE IF NOT EXISTS trigger_libraries (
namespace TEXT NOT NULL,
version TEXT NOT NULL,
manifest_json TEXT NOT NULL,
package_json TEXT NOT NULL,
installed_by TEXT NOT NULL,
installed_at INTEGER NOT NULL,
active INTEGER NOT NULL DEFAULT 1 CHECK (active IN (0, 1)),
PRIMARY KEY(namespace, version)
);
CREATE TABLE IF NOT EXISTS trigger_execution_steps (
execution_id TEXT NOT NULL REFERENCES trigger_executions(execution_id) ON DELETE CASCADE,
sequence INTEGER NOT NULL,
node_id TEXT,
kind TEXT NOT NULL,
result_json TEXT,
writes_json TEXT NOT NULL DEFAULT '{}',
instructions INTEGER NOT NULL,
created_at INTEGER NOT NULL,
PRIMARY KEY(execution_id, sequence)
);
CREATE INDEX IF NOT EXISTS trigger_executions_history_idx
ON trigger_executions(started_at DESC, execution_id DESC);
CREATE INDEX IF NOT EXISTS trigger_executions_resume_idx
ON trigger_executions(status, updated_at);
CREATE TABLE IF NOT EXISTS trigger_event_capture_sessions (
capture_id TEXT PRIMARY KEY,
created_by TEXT NOT NULL,
event_types_json TEXT NOT NULL,
expires_at INTEGER NOT NULL,
maximum_samples INTEGER NOT NULL CHECK (maximum_samples BETWEEN 1 AND 500),
created_at INTEGER NOT NULL
);
CREATE TABLE IF NOT EXISTS trigger_event_samples (
sample_id TEXT PRIMARY KEY,
capture_id TEXT NOT NULL REFERENCES trigger_event_capture_sessions(capture_id) ON DELETE CASCADE,
event_type TEXT NOT NULL,
context_json TEXT NOT NULL,
captured_at INTEGER NOT NULL
);
CREATE INDEX IF NOT EXISTS trigger_event_samples_capture_idx
ON trigger_event_samples(capture_id, captured_at DESC);
CREATE TABLE IF NOT EXISTS trigger_libraries (
namespace TEXT NOT NULL,
version TEXT NOT NULL,
manifest_json TEXT NOT NULL,
package_json TEXT NOT NULL,
installed_by TEXT NOT NULL,
installed_at INTEGER NOT NULL,
active INTEGER NOT NULL DEFAULT 1 CHECK (active IN (0, 1)),
PRIMARY KEY(namespace, version)
);