From 5e627cb42037a0dabf09d47bbf8405a88e251bc5 Mon Sep 17 00:00:00 2001 From: Alexei Kharchev Date: Sun, 20 Oct 2024 14:59:11 +0800 Subject: [PATCH 1/3] Add Lifecycle scripts included in trilium@0.63.6: test npm run test-jasmine && npm run test-es6 postinstall rimraf ./node_modules/canvas available via `npm run-script`: start-server cross-env TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/www.js start-server-no-dir cross-env TRILIUM_SAFE_MODE=1 TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/www.js qstart-server npm run qswitch-server && TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/www.js start-electron cross-env TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev electron --inspect=5858 . start-electron-no-dir cross-env TRILIUM_SAFE_MODE=1 TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 electron --inspect=5858 . qstart-electron npm run qswitch-electron && TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev electron --inspect=5858 . start-test-server npm run qswitch-server; rm -rf ./data-test; cross-env TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data-test TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev TRILIUM_PORT=9999 node src/www.js switch-server rm -rf ./node_modules/better-sqlite3 && npm install switch-electron ./node_modules/.bin/electron-rebuild qswitch-server rm -rf ./node_modules/better-sqlite3/bin ; mkdir -p ./node_modules/better-sqlite3/build ; cp ./bin/better-sqlite3/linux-server-better_sqlite3.node ./node_modules/better-sqlite3/build/better_sqlite3.node qswitch-electron rm -rf ./node_modules/better-sqlite3/bin ; mkdir -p ./node_modules/better-sqlite3/build ; cp ./bin/better-sqlite3/linux-desktop-better_sqlite3.node ./node_modules/better-sqlite3/build/better_sqlite3.node build-backend-docs rm -rf ./docs/backend_api && ./node_modules/.bin/jsdoc -c jsdoc-conf.json -d ./docs/backend_api src/becca/entities/*.js src/services/backend_script_api.js src/services/sql.js build-frontend-docs rm -rf ./docs/frontend_api && ./node_modules/.bin/jsdoc -c jsdoc-conf.json -d ./docs/frontend_api src/public/app/entities/*.js src/public/app/services/frontend_script_api.js src/public/app/widgets/basic_widget.js src/public/app/widgets/note_context_aware_widget.js src/public/app/widgets/right_panel_widget.js build-docs npm run build-backend-docs && npm run build-frontend-docs webpack webpack -c webpack.config.js test-jasmine TRILIUM_DATA_DIR=~/trilium/data-test jasmine test-es6 node -r esm spec-es6/attribute_parser.spec.js 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 options for node debugging --- package.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package.json b/package.json index 15956516f..1cf841b45 100644 --- a/package.json +++ b/package.json @@ -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": { From 3806c35bd365d5a24cf7e7b39e8ab8418a15c97e Mon Sep 17 00:00:00 2001 From: Alexei Kharchev Date: Sun, 3 Nov 2024 20:29:48 +0800 Subject: [PATCH 2/3] Checking for tables at startup --- src/services/sql_init.js | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/src/services/sql_init.js b/src/services/sql_init.js index f1b4e9152..eaea00710 100644 --- a/src/services/sql_init.js +++ b/src/services/sql_init.js @@ -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) { From d41b8da3a1994e586c7fe1bd5eddf5b0d6e8637f Mon Sep 17 00:00:00 2001 From: Alexei Kharchev Date: Sun, 3 Nov 2024 20:42:45 +0800 Subject: [PATCH 3/3] Get rid of political propaganda --- README.md | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 9868d1896..373f345e4 100644 --- a/README.md +++ b/README.md @@ -2,23 +2,18 @@ ## Trilium is in maintenance mode - see details in https://github.com/zadam/trilium/issues/4620 -Preliminary disccusions on the successor organization are taking place in [Trilium Next discussions](https://github.com/orgs/TriliumNext/discussions). +Preliminary disccusions on the successor organization are taking place in [Trilium Next discussions](https://github.com/orgs/TriliumNext/discussions). [![Join the chat at https://gitter.im/trilium-notes/Lobby](https://badges.gitter.im/trilium-notes/Lobby.svg)](https://gitter.im/trilium-notes/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [English](https://github.com/zadam/trilium/blob/master/README.md) | [Chinese](https://github.com/zadam/trilium/blob/master/README-ZH_CN.md) | [Russian](https://github.com/zadam/trilium/blob/master/README.ru.md) | [Japanese](https://github.com/zadam/trilium/blob/master/README.ja.md) | [Italian](https://github.com/zadam/trilium/blob/master/README.it.md) -Trilium Notes is a hierarchical note taking application with focus on building large personal knowledge bases. +Trilium Notes is a hierarchical note taking application with focus on building large personal knowledge bases. See [screenshots](https://github.com/zadam/trilium/wiki/Screenshot-tour) for quick overview: Trilium Screenshot -Ukraine is currently defending itself from Russian aggression, please consider [donating to Ukrainian Army or humanitarian charities](https://standforukraine.com/). - -

- drawing - Trilium Notes supports Ukraine! -

+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