import Database from 'better-sqlite3'; import config from '../config.js'; import path from 'path'; import { fileURLToPath } from 'url'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const PROJECT_ROOT = path.resolve(__dirname, '../../'); const DB_PATH = path.join(PROJECT_ROOT, 'data', config.database.sqlite3.filename); let db = null; export function getSqlite3() { if (db) return db; const dbConfig = config.database.sqlite3; db = new Database(DB_PATH, { fileMustExist: dbConfig.fileMustExist, readonly: dbConfig.readonly, timeout: dbConfig.timeout }); db.pragma(`foreign_keys = ${dbConfig.performance.foreignKeys ? 'ON' : 'OFF'}`); db.pragma(`journal_mode = ${dbConfig.performance.journalMode}`); db.pragma(`synchronous = ${dbConfig.performance.synchronous}`); db.pragma(`temp_store = ${dbConfig.performance.tempStore}`); return db; } export function closeSqlite3() { if (db) { try { db.close(); db = null; } catch (err) { throw err; } } }