Docs/Skills and code/src/

src/discovery/v2-schema.js

Code37 lines1.9 KBsrc/

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.