"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getDb = getDb; exports.closeDb = closeDb; const better_sqlite3_1 = __importDefault(require("better-sqlite3")); const path_1 = __importDefault(require("path")); const fs_1 = __importDefault(require("fs")); const DB_PATH = path_1.default.resolve('./data/server.db'); let db; function getDb() { if (!db) { const dir = path_1.default.dirname(DB_PATH); if (!fs_1.default.existsSync(dir)) { fs_1.default.mkdirSync(dir, { recursive: true }); } db = new better_sqlite3_1.default(DB_PATH); db.pragma('journal_mode = WAL'); db.pragma('foreign_keys = ON'); migrate(); } return db; } function migrate() { db.exec(` CREATE TABLE IF NOT EXISTS jobs ( id TEXT PRIMARY KEY, video_path TEXT NOT NULL, video_filename TEXT NOT NULL, status TEXT NOT NULL DEFAULT 'pending', config TEXT NOT NULL, progress REAL DEFAULT 0, current_index INTEGER DEFAULT 0, total_units INTEGER DEFAULT 0, segments TEXT DEFAULT '[]', last_context TEXT DEFAULT '{}', current_time_position REAL DEFAULT 0, error TEXT, created_at TEXT NOT NULL, updated_at TEXT NOT NULL, completed_at TEXT, output_audio TEXT, output_subtitles_srt TEXT, output_subtitles_vtt TEXT, output_muxed TEXT, output_options TEXT DEFAULT '{}' ); CREATE TABLE IF NOT EXISTS config ( key TEXT PRIMARY KEY, value TEXT NOT NULL ); `); } function closeDb() { if (db) { db.close(); } } //# sourceMappingURL=index.js.map