File size: 966 Bytes
1187856 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | import { DatabaseSync } from "node:sqlite";
import fs from "fs";
import path from "path";
function defaultDbPath(): string {
const candidates = [
path.resolve(process.cwd(), "..", "..", "database", "database.sqlite"),
path.resolve(process.cwd(), "database", "database.sqlite"),
];
return candidates.find((candidate) => fs.existsSync(candidate)) || candidates[0];
}
const DB_PATH = process.env.TRIWORLDBENCH_DB_PATH || defaultDbPath();
const READ_ONLY_DB = true;
let db: DatabaseSync | null = null;
export function getDb(): DatabaseSync {
if (!db) {
if (!fs.existsSync(DB_PATH)) {
throw new Error("TriWorldBench database was not found at " + DB_PATH);
}
db = new DatabaseSync(DB_PATH, { readOnly: true });
db.exec("PRAGMA busy_timeout = 5000");
db.exec("PRAGMA foreign_keys = ON");
}
return db;
}
export function closeDb(): void {
if (db) {
db.close();
db = null;
}
}
export { DB_PATH, READ_ONLY_DB };
|