blob: 9f768f27544b9cf28872c9b81f53f805b44289bc [file]
import type { DatabaseSync } from 'node:sqlite';
export const SQLITE_WORKFLOW_SCHEMA_VERSION = 3;
export function migrateSqliteWorkflowDatabase(db: DatabaseSync): void {
db.exec(`
CREATE TABLE IF NOT EXISTS workflow_task_ledger_events (
session_id TEXT NOT NULL,
sequence INTEGER NOT NULL CHECK (sequence >= 0),
event_id TEXT NOT NULL,
record_json TEXT NOT NULL,
PRIMARY KEY (session_id, sequence),
UNIQUE (session_id, event_id)
);
CREATE TABLE IF NOT EXISTS workflow_task_ledger_projections (
session_id TEXT PRIMARY KEY,
record_json TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS workflow_plan_events (
session_id TEXT NOT NULL,
sequence INTEGER NOT NULL CHECK (sequence >= 0),
event_id TEXT NOT NULL,
store_version INTEGER NOT NULL CHECK (store_version > 0),
record_json TEXT NOT NULL,
PRIMARY KEY (session_id, sequence),
UNIQUE (session_id, event_id),
UNIQUE (session_id, store_version)
);
CREATE TABLE IF NOT EXISTS workflow_plan_projections (
session_id TEXT PRIMARY KEY,
store_version INTEGER NOT NULL CHECK (store_version >= 0),
record_json TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS workflow_deep_research_events (
session_id TEXT NOT NULL,
sequence INTEGER NOT NULL CHECK (sequence >= 0),
event_id TEXT NOT NULL,
record_json TEXT NOT NULL,
PRIMARY KEY (session_id, sequence),
UNIQUE (session_id, event_id)
);
CREATE TABLE IF NOT EXISTS workflow_plan_reminders (
reminder_id TEXT PRIMARY KEY,
created_at INTEGER NOT NULL,
updated_at INTEGER NOT NULL,
record_json TEXT NOT NULL
);
CREATE INDEX IF NOT EXISTS workflow_plan_reminders_order
ON workflow_plan_reminders(created_at, reminder_id);
CREATE TABLE IF NOT EXISTS workflow_quote_companion_cleanup (
session_id TEXT PRIMARY KEY,
tracked_at INTEGER NOT NULL
);
CREATE TABLE IF NOT EXISTS workflow_daily_review_state (
singleton INTEGER PRIMARY KEY CHECK (singleton = 1),
config_json TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS workflow_daily_review_authority_state (
singleton INTEGER PRIMARY KEY CHECK (singleton = 1),
revision INTEGER NOT NULL CHECK (revision >= 0)
);
CREATE TABLE IF NOT EXISTS workflow_daily_review_archives (
archive_id TEXT PRIMARY KEY,
generated_at INTEGER NOT NULL,
day_from_ms INTEGER NOT NULL,
record_json TEXT NOT NULL
);
CREATE INDEX IF NOT EXISTS workflow_daily_review_archives_order
ON workflow_daily_review_archives(generated_at DESC, day_from_ms DESC, archive_id);
`);
}