Docs/Skills and code/src/
src/discovery/v2-schema.js
import { getDb } from "../db.js";
export function ensureDiscoveryV2Schema() {
const db = getDb();
db.exec(`
CREATE TABLE IF NOT EXISTS discovery_v2_phases (
phase_id TEXT PRIMARY KEY, started_at TEXT NOT NULL, finished_at TEXT,
routes_json TEXT NOT NULL, status TEXT NOT NULL, settings_json TEXT,
queries_attempted INTEGER NOT NULL DEFAULT 0, queries_succeeded INTEGER NOT NULL DEFAULT 0,
videos_seen INTEGER NOT NULL DEFAULT 0, channels_seen INTEGER NOT NULL DEFAULT 0,
channels_new INTEGER NOT NULL DEFAULT 0, error_count INTEGER NOT NULL DEFAULT 0
);
CREATE TABLE IF NOT EXISTS discovery_v2_queries (
id INTEGER PRIMARY KEY AUTOINCREMENT, phase_id TEXT NOT NULL, route TEXT NOT NULL,
query TEXT NOT NULL, source_type TEXT NOT NULL, source_ref TEXT,
hypothesis TEXT, status TEXT NOT NULL DEFAULT 'pending', result_count INTEGER DEFAULT 0,
error TEXT, created_at TEXT NOT NULL, finished_at TEXT,
UNIQUE(phase_id, route, query), FOREIGN KEY(phase_id) REFERENCES discovery_v2_phases(phase_id)
);
CREATE TABLE IF NOT EXISTS discovery_v2_channel_events (
id INTEGER PRIMARY KEY AUTOINCREMENT, phase_id TEXT NOT NULL, channel_url TEXT NOT NULL,
channel_name TEXT, route TEXT NOT NULL, query TEXT NOT NULL, first_video_id TEXT,
result_position INTEGER, was_new_channel INTEGER NOT NULL DEFAULT 0,
first_seen_at TEXT NOT NULL,
UNIQUE(phase_id, channel_url, route, query),
FOREIGN KEY(phase_id) REFERENCES discovery_v2_phases(phase_id)
);
CREATE INDEX IF NOT EXISTS idx_discovery_v2_events_phase ON discovery_v2_channel_events(phase_id, was_new_channel);
CREATE TABLE IF NOT EXISTS discovery_v2_scores (
phase_id TEXT NOT NULL, channel_url TEXT NOT NULL, channel_name TEXT,
discovery_score REAL NOT NULL, evidence_json TEXT NOT NULL, scored_at TEXT NOT NULL,
PRIMARY KEY(phase_id, channel_url)
);
`);
return db;
}
Shown as it is in the repository at build time (2026-11-03); the home directory appears as <home>. If this page and the file differ, the file is right. Back to the catalogue.