import path from 'node:path'; import Database from 'better-sqlite3'; import { applyMigrations } from 'bchen-sqlite-migrate'; export const MIGRATIONS_DIR = path.resolve(import.meta.dirname, 'migrations'); export function applySchema(db: Database.Database): void { applyMigrations(db, MIGRATIONS_DIR, { genesisProbeTable: 'users' }); } export function initDb(dbPath: string): Database.Database { const db = new Database(dbPath); db.pragma('journal_mode = WAL'); db.pragma('foreign_keys = ON'); const stampGenesis = process.env.DB_MIGRATIONS_STAMP_GENESIS === '1'; const summary = applyMigrations(db, MIGRATIONS_DIR, { stampGenesis, genesisProbeTable: 'users', logger: (msg) => process.stdout.write(`${msg}\n`), }); process.stdout.write( `migrations: ${summary.applied + summary.alreadyApplied} applied, ${summary.pending} pending\n`, ); return db; }