Extracted from uncaged monorepo (oc-xiaoju/uncaged). Resolves oc-xiaoju/uncaged#224. - @uncaged/ograph: CF Worker engine (events, projections, reactions) - @uncaged/ograph-cli: CLI for managing OGraph instances - Removed @uncaged/oid dependency (unused) - 116 tests, all passing - CI: GitHub Actions 小橘 🍊(NEKO Team)
43 lines
1.3 KiB
SQL
43 lines
1.3 KiB
SQL
-- Add handler_code column to reactions table
|
|
-- Pre-launch: drop and recreate
|
|
DROP TABLE IF EXISTS reaction_logs;
|
|
DROP TABLE IF EXISTS reactions;
|
|
|
|
CREATE TABLE reactions (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
projection_def_hash TEXT NOT NULL REFERENCES projection_def_versions(hash),
|
|
params_hash TEXT NOT NULL,
|
|
params TEXT NOT NULL,
|
|
action TEXT NOT NULL DEFAULT 'webhook',
|
|
webhook_url TEXT,
|
|
emit_event_type TEXT,
|
|
emit_payload_template TEXT,
|
|
handler_code TEXT,
|
|
handler_timeout_ms INTEGER DEFAULT 5000,
|
|
created_at INTEGER NOT NULL DEFAULT (unixepoch() * 1000)
|
|
);
|
|
CREATE INDEX idx_reactions_projection ON reactions(projection_def_hash, params_hash);
|
|
|
|
CREATE TABLE reaction_logs (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
reaction_id INTEGER NOT NULL,
|
|
trigger_event_id INTEGER NOT NULL,
|
|
projection_def TEXT NOT NULL,
|
|
old_value TEXT,
|
|
new_value TEXT,
|
|
action TEXT NOT NULL,
|
|
status TEXT NOT NULL,
|
|
handler_output TEXT,
|
|
duration_ms INTEGER,
|
|
created_at INTEGER NOT NULL DEFAULT (unixepoch() * 1000)
|
|
);
|
|
CREATE INDEX idx_rlog_reaction ON reaction_logs(reaction_id);
|
|
CREATE INDEX idx_rlog_event ON reaction_logs(trigger_event_id);
|
|
|
|
CREATE TABLE IF NOT EXISTS reaction_kv (
|
|
reaction_id INTEGER NOT NULL,
|
|
key TEXT NOT NULL,
|
|
value TEXT NOT NULL,
|
|
PRIMARY KEY (reaction_id, key)
|
|
);
|