From bcb113fd51582d667a43b435e185191e43e30476 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 3 May 2025 08:03:26 +0000 Subject: [PATCH 1/6] fix(deps): update dependency sqlite to v5 --- apps/db-compare/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/db-compare/package.json b/apps/db-compare/package.json index 113afc662..d69e7a451 100644 --- a/apps/db-compare/package.json +++ b/apps/db-compare/package.json @@ -6,7 +6,7 @@ "dependencies": { "colors": "1.4.0", "diff": "5.0.0", - "sqlite": "4.0.23", + "sqlite": "5.1.1", "sqlite3": "5.1.5" }, "nx": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 638121c60..4ca3984b7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -293,8 +293,8 @@ importers: specifier: 5.0.0 version: 5.0.0 sqlite: - specifier: 4.0.23 - version: 4.0.23 + specifier: 5.1.1 + version: 5.1.1 sqlite3: specifier: 5.1.5 version: 5.1.5(encoding@0.1.13) @@ -9421,8 +9421,8 @@ packages: sqlite3@5.1.5: resolution: {integrity: sha512-7sP16i4wI+yKnGOO2q2ijze7EjQ9US+Vw7DYYwxfFtqNZDGgBcEw0oeDaDvUTq66uJOzVd/z6MkIg+c9erSJKg==} - sqlite@4.0.23: - resolution: {integrity: sha512-dSdmSkrdIhUL7xP/fiEMfFuAo4dxb0afag3rK8T4Y9lYxE3g3fXT0J8H9qSFvmcKxnM0zEA8yvLbpdWQ8mom3g==} + sqlite@5.1.1: + resolution: {integrity: sha512-oBkezXa2hnkfuJwUo44Hl9hS3er+YFtueifoajrgidvqsJRQFpc5fKoAkAor1O5ZnLoa28GBScfHXs8j0K358Q==} ssri@12.0.0: resolution: {integrity: sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==} @@ -21487,7 +21487,7 @@ snapshots: - encoding - supports-color - sqlite@4.0.23: {} + sqlite@5.1.1: {} ssri@12.0.0: dependencies: From 21f1bfbfd098a8609f7ecc4e2686ef24ab02b20f Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 3 May 2025 11:10:57 +0300 Subject: [PATCH 2/6] feat(db-compare): improve error logging when loading database --- apps/db-compare/src/compare.ts | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/apps/db-compare/src/compare.ts b/apps/db-compare/src/compare.ts index 42e8d9ecf..b92bcb0f8 100644 --- a/apps/db-compare/src/compare.ts +++ b/apps/db-compare/src/compare.ts @@ -6,6 +6,7 @@ import * as sqlite3 from "sqlite3"; import sql from "./sql.js"; import "colors"; +import path from "path"; function printDiff(one: string, two: string) { const diff = jsDiff.diffChars(one, two); @@ -67,11 +68,25 @@ function compareRows(table: string, rsLeft: Record, rsRight: Record } async function main() { - const dbLeftPath = process.argv[2]; - const dbRightPath = process.argv[3]; + const dbLeftPath = path.resolve(process.argv[2]); + const dbRightPath = path.resolve(process.argv[3]); - const dbLeft = await sqlite.open({filename: dbLeftPath, driver: sqlite3.Database}); - const dbRight = await sqlite.open({filename: dbRightPath, driver: sqlite3.Database}); + let dbLeft: sqlite.Database; + let dbRight: sqlite.Database; + + try { + dbLeft = await sqlite.open({filename: dbLeftPath, driver: sqlite3.Database}); + } catch (e: any) { + console.error(`Could not load first database at ${dbRightPath} due to: ${e.message}`); + process.exit(1); + } + + try { + dbRight = await sqlite.open({filename: dbRightPath, driver: sqlite3.Database}); + } catch (e: any) { + console.error(`Could not load second database at ${dbRightPath} due to: ${e.message}`); + process.exit(2); + } async function compare(table: string, column: string, query: string) { const rsLeft = await sql.getIndexed(dbLeft, column, query); From b56ae01990a4e8470c312a080128822db0822c4d Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 3 May 2025 11:15:50 +0300 Subject: [PATCH 3/6] feat(db-compare): display usage --- apps/db-compare/src/compare.ts | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/apps/db-compare/src/compare.ts b/apps/db-compare/src/compare.ts index b92bcb0f8..c1e1b26cc 100644 --- a/apps/db-compare/src/compare.ts +++ b/apps/db-compare/src/compare.ts @@ -68,8 +68,13 @@ function compareRows(table: string, rsLeft: Record, rsRight: Record } async function main() { - const dbLeftPath = path.resolve(process.argv[2]); - const dbRightPath = path.resolve(process.argv[3]); + const dbLeftPath = process.argv.at(-2); + const dbRightPath = process.argv.at(-1); + + if (process.argv.length < 4 || !dbLeftPath || !dbRightPath) { + console.log(`Usage: ${process.argv[0]} ${process.argv[1]} path/to/first.db path/to/second.db`); + process.exit(1); + } let dbLeft: sqlite.Database; let dbRight: sqlite.Database; @@ -77,15 +82,15 @@ async function main() { try { dbLeft = await sqlite.open({filename: dbLeftPath, driver: sqlite3.Database}); } catch (e: any) { - console.error(`Could not load first database at ${dbRightPath} due to: ${e.message}`); - process.exit(1); + console.error(`Could not load first database at ${path.resolve(dbRightPath)} due to: ${e.message}`); + process.exit(2); } try { dbRight = await sqlite.open({filename: dbRightPath, driver: sqlite3.Database}); } catch (e: any) { - console.error(`Could not load second database at ${dbRightPath} due to: ${e.message}`); - process.exit(2); + console.error(`Could not load second database at ${path.resolve(dbRightPath)} due to: ${e.message}`); + process.exit(3); } async function compare(table: string, column: string, query: string) { From 886dd60dd039068d7c25bfc7e33793f44adbe87b Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 3 May 2025 11:24:19 +0300 Subject: [PATCH 4/6] feat(db-compare): adapt to v214 --- apps/db-compare/README.md | 17 +++++++++++++++++ apps/db-compare/src/compare.ts | 10 +++++----- 2 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 apps/db-compare/README.md diff --git a/apps/db-compare/README.md b/apps/db-compare/README.md new file mode 100644 index 000000000..4cc13218a --- /dev/null +++ b/apps/db-compare/README.md @@ -0,0 +1,17 @@ +# Database compare tool + +> [!IMPORTANT] +> The original implementation was signficantly out of date. While we have made the effort of updating dependencies and getting it to run, currently it only compares the old database structure (v214). + +To build and run manually: + +```sh +nx build db-compare +node ./apps/db-compare/dist/compare.js +``` + +To serve development build with arguments: + +```sh +nx serve db-compare --args "apps/server/spec/db/document_v214.db" --args "apps/server/spec/db/document_v214_migrated.db" +``` \ No newline at end of file diff --git a/apps/db-compare/src/compare.ts b/apps/db-compare/src/compare.ts index c1e1b26cc..64410cafe 100644 --- a/apps/db-compare/src/compare.ts +++ b/apps/db-compare/src/compare.ts @@ -1,6 +1,6 @@ "use strict"; -import jsDiff from "diff"; +import * as jsDiff from "diff"; import * as sqlite from "sqlite"; import * as sqlite3 from "sqlite3"; import sql from "./sql.js"; @@ -101,7 +101,7 @@ async function main() { } await compare("branches", "branchId", - "SELECT branchId, noteId, parentNoteId, notePosition, utcDateCreated, isDeleted, prefix FROM branches"); + "SELECT branchId, noteId, parentNoteId, notePosition, utcDateModified, isDeleted, prefix FROM branches"); await compare("notes", "noteId", "SELECT noteId, title, dateCreated, utcDateCreated, isProtected, isDeleted FROM notes WHERE isDeleted = 0"); @@ -116,13 +116,13 @@ async function main() { "SELECT noteRevisionId, content FROM note_revision_contents"); await compare("options", "name", - `SELECT name, value, utcDateCreated FROM options WHERE isSynced = 1`); + `SELECT name, value, utcDateModified FROM options WHERE isSynced = 1`); await compare("attributes", "attributeId", "SELECT attributeId, noteId, type, name, value FROM attributes"); - await compare("api_tokens", "apiTokenId", - "SELECT apiTokenId, token, utcDateCreated, isDeleted FROM api_tokens"); + await compare("etapi_tokens", "etapiTokenId", + "SELECT etapiTokenId, name, tokenHash, utcDateCreated, utcDateModified, isDeleted FROM etapi_tokens"); await compare("entity_changes", "uniqueId", "SELECT entityName || '-' || entityId AS uniqueId, hash, isErased, utcDateChanged FROM entity_changes WHERE isSynced = 1"); From 70cf2513ce92ce50e152197f5055ca4185c5f4d5 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 3 May 2025 11:25:02 +0300 Subject: [PATCH 5/6] feat(ci): add build to nx affected --- .github/workflows/dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index cadd88e7d..6497ebb96 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -39,7 +39,7 @@ jobs: - uses: nrwl/nx-set-shas@v4 - name: Check affected - run: pnpm nx affected -t rebuild-deps + run: pnpm nx affected -t build rebuild-deps report-electron-size: name: Report Electron size From c1e5ab27b68a00a511de953e1a0d1d04d2f4c441 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 3 May 2025 11:28:14 +0300 Subject: [PATCH 6/6] fix(dump-db): type-only import --- apps/dump-db/src/inc/sql.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/dump-db/src/inc/sql.ts b/apps/dump-db/src/inc/sql.ts index c0f6ebc50..481d95427 100644 --- a/apps/dump-db/src/inc/sql.ts +++ b/apps/dump-db/src/inc/sql.ts @@ -1,4 +1,4 @@ -import Database, { Database as DatabaseType } from "better-sqlite3"; +import Database, { type Database as DatabaseType } from "better-sqlite3"; let dbConnection: DatabaseType;