62 lines
1.8 KiB
JavaScript
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
|