import Database from "better-sqlite3"; import { app } from "electron"; import path from "node:path"; import fs from "node:fs"; import { initSchema } from "./schema"; let db: Database.Database | null = null; export function getDb(): Database.Database { if (db) return db; const dbDir = app.getPath("userData"); if (!fs.existsSync(dbDir)) { fs.mkdirSync(dbDir, { recursive: true }); } const dbPath = path.join(dbDir, "claude-flow.db"); db = new Database(dbPath); db.pragma("journal_mode = WAL"); db.pragma("foreign_keys = ON"); initSchema(db); runMigrations(db); return db; } function runMigrations(db: Database.Database): void { // v2: add git_branch column to sessions const cols = db.pragma("table_info(sessions)") as { name: string }[]; if (!cols.find((c) => c.name === "git_branch")) { db.exec("ALTER TABLE sessions ADD COLUMN git_branch TEXT"); } } export function closeDb() { if (db) { db.close(); db = null; } }