Files
Trilium/apps/server/src/services/sql_init.ts

62 lines
2.0 KiB
TypeScript
Raw Normal View History

import { type OptionRow } from "@triliumnext/commons";
import { sql_init as coreSqlInit } from "@triliumnext/core";
import fs from "fs";
2026-01-06 11:10:09 +02:00
import BBranch from "../becca/entities/bbranch.js";
import BNote from "../becca/entities/bnote.js";
import BOption from "../becca/entities/boption.js";
import cls from "./cls.js";
import password from "./encryption/password.js";
2025-09-15 19:07:23 +03:00
import hidden_subtree from "./hidden_subtree.js";
2026-01-06 11:10:09 +02:00
import zipImportService from "./import/zip.js";
import log from "./log.js";
import optionService from "./options.js";
import resourceDir from "./resource_dir.js";
import sql from "./sql.js";
import TaskContext from "./task_context.js";
const schemaExists = coreSqlInit.schemaExists;
const isDbInitialized = coreSqlInit.isDbInitialized;
const dbReady = coreSqlInit.dbReady;
const setDbAsInitialized = coreSqlInit.setDbAsInitialized;
const initDbConnection = coreSqlInit.initDbConnection;
const initializeDb = coreSqlInit.initializeDb;
export const getDbSize = coreSqlInit.getDbSize;
2025-01-09 18:07:02 +02:00
async function createDatabaseForSync(options: OptionRow[], syncServerHost = "", syncProxy = "") {
log.info("Creating database for sync");
2020-06-20 12:31:38 +02:00
if (isDbInitialized()) {
throw new Error("DB is already initialized");
}
const schema = fs.readFileSync(`${resourceDir.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;
2020-06-20 12:31:38 +02:00
sql.transactional(() => {
sql.executeScript(schema);
optionsInitService.initNotSyncedOptions(false, { syncServerHost, syncProxy });
// document options required for sync to kick off
for (const opt of options) {
new BOption(opt).save();
}
});
log.info("Schema and not synced options generated.");
}
export default {
dbReady,
schemaExists,
isDbInitialized,
createInitialDatabase,
createDatabaseForSync,
setDbAsInitialized,
getDbSize,
initializeDb
2020-06-17 23:03:46 +02:00
};