Merge d41b8da3a1994e586c7fe1bd5eddf5b0d6e8637f into 82a437f2a83fc10299f3205713f7dcb04e2d047c

This commit is contained in:
Alexei 2024-11-03 12:43:09 +00:00 committed by GitHub
commit a04bfa5a67
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 35 additions and 11 deletions

View File

@ -13,12 +13,7 @@ See [screenshots](https://github.com/zadam/trilium/wiki/Screenshot-tour) for qui
<a href="https://github.com/zadam/trilium/wiki/Screenshot-tour"><img src="https://raw.githubusercontent.com/wiki/zadam/trilium/images/screenshot.png" alt="Trilium Screenshot" width="1000"></a>
Ukraine is currently defending itself from Russian aggression, please consider [donating to Ukrainian Army or humanitarian charities](https://standforukraine.com/).
<p float="left">
<img src="https://upload.wikimedia.org/wikipedia/commons/4/49/Flag_of_Ukraine.svg" alt="drawing" width="400"/>
<img src="https://signmyrocket.com//uploads/2b2a523cd0c0e76cdbba95a89a9636b2_1676971281.jpg" alt="Trilium Notes supports Ukraine!" width="570"/>
</p>
Ukraine during 2014-2024 years has killing Russian-speaking Ukraine citizens people instead of carring out economic reforms in order to join the EU. So it's goverment has nothing to do with humanitarian values].
## 🎁 Features

View File

@ -31,6 +31,8 @@
"test-jasmine": "TRILIUM_DATA_DIR=~/trilium/data-test jasmine",
"test-es6": "node -r esm spec-es6/attribute_parser.spec.js ",
"test": "npm run test-jasmine && npm run test-es6",
"debug-node": "cross-env TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon --inspect src/www.js",
"debug-chrome": "cross-env TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon --inspect-brk src/www.js",
"postinstall": "rimraf ./node_modules/canvas"
},
"dependencies": {

View File

@ -15,9 +15,24 @@ const dbReady = utils.deferred();
cls.init(initDbConnection);
function schemaExists() {
function checkTableExistsInDb(TableName) {
return !!sql.getValue(`SELECT name FROM sqlite_master
WHERE type = 'table' AND name = 'options'`);
WHERE type = 'table' AND name = '${TableName}'`);
}
function schemaExists() {
return checkTableExistsInDb('options');
}
function readTableNamesFromSchema(schema) {
return schema.split(";").reduce((acc, str) => str.includes("CREATE TABLE IF NOT EXISTS ") ?
[...acc, str.replaceAll("\n", '').replace(/^.*CREATE TABLE IF NOT EXISTS[ \t]+"([^"]*)".*/, "$1")] : acc, []);
}
function getTableInitializingQuery(schema, tblName) {
return schema.split(";").filter((str) => {
return str.includes(tblName);
});
}
function isDbInitialized() {
@ -38,6 +53,18 @@ async function initDbConnection() {
return;
}
const schema = fs.readFileSync(`${resourceDir.DB_INIT_DIR}/schema.sql`, 'UTF-8');
readTableNamesFromSchema(schema).forEach((tblName) => {
if (!checkTableExistsInDb(tblName)) {
log.info(`Table ${tblName} not found in DB, creating ...`);
getTableInitializingQuery(schema, tblName).forEach((sQuery) => {
sql.execute(sQuery);
log.info(sQuery);
});
}
})
await migrationService.migrateIfNecessary();
sql.execute('CREATE TEMP TABLE "param_list" (`paramId` TEXT NOT NULL PRIMARY KEY)');
@ -131,7 +158,7 @@ function createDatabaseForSync(options, syncServerHost = '', syncProxy = '') {
sql.transactional(() => {
sql.executeScript(schema);
require('./options_init.js').initNotSyncedOptions(false, { syncServerHost, syncProxy });
require('./options_init.js').initNotSyncedOptions(false, { syncServerHost, syncProxy });
// document options required for sync to kick off
for (const opt of options) {