chore(dx/server): improve asset management for DB init

This commit is contained in:
Elian Doran
2025-08-31 20:28:21 +03:00
parent c92860ae49
commit 42559364e4
3 changed files with 14 additions and 11 deletions

View File

@@ -0,0 +1,10 @@
import { join } from "path";
const ASSET_ROOT_DIR = process.env.SERVER_ASSET_ROOT_DIR;
if (!ASSET_ROOT_DIR) {
console.error("Missing SERVER_ASSET_ROOT_DIR env.");
process.exit(1);
}
/** Contains database initialization data such as the demo database and the schema. */
export const DB_INIT_DIR = join(ASSET_ROOT_DIR, "db")

View File

@@ -6,15 +6,8 @@ export const RESOURCE_DIR = path.join(getResourceDir(), "assets");
// where the "trilium" executable is
const ELECTRON_APP_ROOT_DIR = path.resolve(RESOURCE_DIR, "../..");
const DB_INIT_DIR = path.resolve(RESOURCE_DIR, "db");
if (!fs.existsSync(DB_INIT_DIR)) {
console.error(`Could not find DB initialization directory: ${DB_INIT_DIR}`);
process.exit(1);
}
export default {
RESOURCE_DIR,
DB_INIT_DIR,
ELECTRON_APP_ROOT_DIR
};

View File

@@ -1,6 +1,5 @@
import log from "./log.js";
import fs from "fs";
import resourceDir from "./resource_dir.js";
import sql from "./sql.js";
import { isElectron, deferred } from "./utils.js";
import optionService from "./options.js";
@@ -17,6 +16,7 @@ import zipImportService from "./import/zip.js";
import password from "./encryption/password.js";
import backup from "./backup.js";
import eventService from "./events.js";
import { DB_INIT_DIR } from "./assets.js";
export const dbReady = deferred<void>();
@@ -75,8 +75,8 @@ async function createInitialDatabase(skipDemoDb?: boolean) {
throw new Error("DB is already initialized");
}
const schema = fs.readFileSync(`${resourceDir.DB_INIT_DIR}/schema.sql`, "utf-8");
const demoFile = (!skipDemoDb ? fs.readFileSync(`${resourceDir.DB_INIT_DIR}/demo.zip`) : null);
const schema = fs.readFileSync(`${DB_INIT_DIR}/schema.sql`, "utf-8");
const demoFile = (!skipDemoDb ? fs.readFileSync(`${DB_INIT_DIR}/demo.zip`) : null);
let rootNote!: BNote;
@@ -153,7 +153,7 @@ async function createDatabaseForSync(options: OptionRow[], syncServerHost = "",
throw new Error("DB is already initialized");
}
const schema = fs.readFileSync(`${resourceDir.DB_INIT_DIR}/schema.sql`, "utf8");
const schema = fs.readFileSync(`${DB_INIT_DIR}/schema.sql`, "utf8");
// We have to import async since options init requires keyboard actions which require translations.
const optionsInitService = (await import("./options_init.js")).default;