Files
aidio-description/dist/server/db/index.js

62 lines
1.8 KiB
JavaScript

"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