import Database from 'better-sqlite3'; import fs from 'fs'; import path from 'path'; import { log } from '../log.js'; let _db: Database.Database | null = null; export function getDb(): Database.Database { if (!_db) throw new Error('Database not initialized. Call initDb() first.'); return _db; } export function initDb(dbPath: string): Database.Database { fs.mkdirSync(path.dirname(dbPath), { recursive: true }); _db = new Database(dbPath); _db.pragma('journal_mode = WAL'); _db.pragma('foreign_keys = ON'); log.info('Central DB initialized', { path: dbPath }); return _db; } /** For tests only — creates an in-memory DB and runs migrations. */ export function initTestDb(): Database.Database { _db = new Database(':memory:'); _db.pragma('foreign_keys = ON'); return _db; } export function closeDb(): void { _db?.close(); _db = null; }