From 64f99ba637b55cc2417726d38c10d5246e2a9fc7 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Fri, 9 Aug 2024 21:51:10 +0300 Subject: [PATCH] integration-test: Allow for in-memory database --- package.json | 3 ++- src/services/sql.ts | 13 ++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index eb3fc0464..7e41ebd4a 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,8 @@ "prepare-dist": "rimraf ./dist && tsc && tsx ./bin/copy-dist.ts", "update-build-info": "tsx bin/update-build-info.ts", "errors": "tsc --watch --noEmit", - "integration-edit-db": "cross-env TRILIUM_INTEGRATION_TEST=edit TRILIUM_PORT=8081 TRILIUM_DATA_DIR=./integration-tests/db nodemon src/www.ts" + "integration-edit-db": "cross-env TRILIUM_INTEGRATION_TEST=edit TRILIUM_PORT=8081 TRILIUM_DATA_DIR=./integration-tests/db nodemon src/www.ts", + "integration-mem-db": "cross-env TRILIUM_INTEGRATION_TEST=memory TRILIUM_PORT=8082 TRILIUM_DATA_DIR=./integration-tests/db nodemon src/www.ts" }, "dependencies": { "@braintree/sanitize-url": "^7.1.0", diff --git a/src/services/sql.ts b/src/services/sql.ts index a3ba519a7..e352a7702 100644 --- a/src/services/sql.ts +++ b/src/services/sql.ts @@ -14,7 +14,18 @@ import ws from "./ws.js"; import becca_loader from "../becca/becca_loader.js"; import entity_changes from "./entity_changes.js"; -const dbConnection: DatabaseType = new Database(dataDir.DOCUMENT_PATH); +function buildDatabase(path: string) { + if (process.env.TRILIUM_INTEGRATION_TEST === "memory") { + // This allows a database that is read normally but is kept in memory and discards all modifications. + const dbBuffer = fs.readFileSync(path); + return new Database(dbBuffer); + } + + return new Database(dataDir.DOCUMENT_PATH); +} + +const dbConnection: DatabaseType = buildDatabase(dataDir.DOCUMENT_PATH); + if (!process.env.TRILIUM_INTEGRATION_TEST) { dbConnection.pragma('journal_mode = WAL'); }