65 lines
2.2 KiB
SQL
65 lines
2.2 KiB
SQL
-- BoosAPI Workflow Studio core tables.
|
|
|
|
CREATE TABLE IF NOT EXISTS workflows (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
public_id TEXT NOT NULL UNIQUE,
|
|
user_id INTEGER,
|
|
name TEXT NOT NULL,
|
|
description TEXT,
|
|
graph TEXT NOT NULL DEFAULT '{}',
|
|
is_template INTEGER NOT NULL DEFAULT 0,
|
|
visibility TEXT NOT NULL DEFAULT 'private',
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
deleted_at TEXT,
|
|
FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE SET NULL
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_workflows_user_updated
|
|
ON workflows(user_id, updated_at DESC);
|
|
CREATE INDEX IF NOT EXISTS idx_workflows_visibility
|
|
ON workflows(visibility);
|
|
CREATE INDEX IF NOT EXISTS idx_workflows_deleted
|
|
ON workflows(deleted_at);
|
|
|
|
CREATE TABLE IF NOT EXISTS workflow_runs (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
public_id TEXT NOT NULL UNIQUE,
|
|
workflow_id INTEGER NOT NULL,
|
|
user_id INTEGER,
|
|
status TEXT NOT NULL,
|
|
input_overrides TEXT NOT NULL DEFAULT '{}',
|
|
final_outputs TEXT,
|
|
error_message TEXT,
|
|
started_at TEXT,
|
|
completed_at TEXT,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
FOREIGN KEY(workflow_id) REFERENCES workflows(id) ON DELETE CASCADE,
|
|
FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE SET NULL
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_workflow_runs_workflow_created
|
|
ON workflow_runs(workflow_id, created_at DESC);
|
|
CREATE INDEX IF NOT EXISTS idx_workflow_runs_user_created
|
|
ON workflow_runs(user_id, created_at DESC);
|
|
CREATE INDEX IF NOT EXISTS idx_workflow_runs_status
|
|
ON workflow_runs(status);
|
|
|
|
CREATE TABLE IF NOT EXISTS workflow_node_runs (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
run_id INTEGER NOT NULL,
|
|
node_id TEXT NOT NULL,
|
|
node_type TEXT NOT NULL,
|
|
status TEXT NOT NULL,
|
|
inputs TEXT NOT NULL DEFAULT '{}',
|
|
outputs TEXT,
|
|
error_message TEXT,
|
|
started_at TEXT,
|
|
completed_at TEXT,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
FOREIGN KEY(run_id) REFERENCES workflow_runs(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_workflow_node_runs_run
|
|
ON workflow_node_runs(run_id, id);
|