From 42b331135d2f444db0c49520456d325ab38617e9 Mon Sep 17 00:00:00 2001 From: bbedward Date: Mon, 8 Sep 2025 22:16:17 -0400 Subject: [PATCH] allow overriding ooye data directory --- scripts/backfill.js | 4 +++- scripts/check-migrate.js | 5 ++--- scripts/migrate-from-old-bridge.js | 3 ++- scripts/remove-old-bridged-users.js | 4 ++-- scripts/save-channel-names-to-db.js | 4 ++-- scripts/save-event-types-to-db.js | 4 ++-- scripts/setup.js | 3 ++- scripts/start-server.js | 4 ++-- scripts/wal.js | 4 ++-- src/db/database.js | 16 ++++++++++++++++ start.js | 4 ++-- 11 files changed, 37 insertions(+), 18 deletions(-) create mode 100644 src/db/database.js diff --git a/scripts/backfill.js b/scripts/backfill.js index 12d9da3..0e0e4c6 100644 --- a/scripts/backfill.js +++ b/scripts/backfill.js @@ -12,6 +12,7 @@ if (!channelID) { const assert = require("assert/strict") const sqlite = require("better-sqlite3") +const path = require("path") const backfill = new sqlite("scripts/backfill.db") backfill.prepare("CREATE TABLE IF NOT EXISTS backfill (channel_id TEXT NOT NULL, message_id INTEGER NOT NULL, PRIMARY KEY (channel_id, message_id))").run() @@ -19,9 +20,10 @@ const HeatSync = require("heatsync") const {reg} = require("../src/matrix/read-registration") const passthrough = require("../src/passthrough") +const {getDatabase} = require("../src/db/database") const sync = new HeatSync({watchFS: false}) -const db = new sqlite("ooye.db") +const db = getDatabase() Object.assign(passthrough, {sync, db}) const DiscordClient = require("../src/d2m/discord-client") diff --git a/scripts/check-migrate.js b/scripts/check-migrate.js index 04a4402..dd31ec6 100755 --- a/scripts/check-migrate.js +++ b/scripts/check-migrate.js @@ -4,10 +4,9 @@ // Trigger the database migration flow and exit after committing. // You can use this to run migrations locally and check the result using sqlitebrowser. -const sqlite = require("better-sqlite3") - const passthrough = require("../src/passthrough") -const db = new sqlite("ooye.db") +const {getDatabase} = require("../src/db/database") +const db = getDatabase() const migrate = require("../src/db/migrate") Object.assign(passthrough, {db}) diff --git a/scripts/migrate-from-old-bridge.js b/scripts/migrate-from-old-bridge.js index 36cf884..5a71ab0 100755 --- a/scripts/migrate-from-old-bridge.js +++ b/scripts/migrate-from-old-bridge.js @@ -16,7 +16,8 @@ const oldAT = reg.old_bridge.as_token const newAT = reg.as_token const oldDB = new sqlite(reg.old_bridge.database) -const db = new sqlite("ooye.db") +const {getDatabase} = require("../src/db/database") +const db = getDatabase() db.exec(`CREATE TABLE IF NOT EXISTS half_shot_migration ( discord_channel TEXT NOT NULL, diff --git a/scripts/remove-old-bridged-users.js b/scripts/remove-old-bridged-users.js index d8910bd..8252893 100644 --- a/scripts/remove-old-bridged-users.js +++ b/scripts/remove-old-bridged-users.js @@ -3,8 +3,8 @@ const HeatSync = require("heatsync") const sync = new HeatSync({watchFS: false}) -const sqlite = require("better-sqlite3") -const db = new sqlite("db/ooye.db") +const {getDatabase} = require("../src/db/database") +const db = getDatabase() const passthrough = require("../src/passthrough") Object.assign(passthrough, {db, sync}) diff --git a/scripts/save-channel-names-to-db.js b/scripts/save-channel-names-to-db.js index 1f36a73..e90e567 100755 --- a/scripts/save-channel-names-to-db.js +++ b/scripts/save-channel-names-to-db.js @@ -1,12 +1,12 @@ #!/usr/bin/env node // @ts-check -const sqlite = require("better-sqlite3") const HeatSync = require("heatsync") const {reg} = require("../src/matrix/read-registration") const passthrough = require("../src/passthrough") -const db = new sqlite("ooye.db") +const {getDatabase} = require("../src/db/database") +const db = getDatabase() const sync = new HeatSync({watchFS: false}) diff --git a/scripts/save-event-types-to-db.js b/scripts/save-event-types-to-db.js index edfbb9c..dd84866 100755 --- a/scripts/save-event-types-to-db.js +++ b/scripts/save-event-types-to-db.js @@ -1,11 +1,11 @@ #!/usr/bin/env node // @ts-check -const sqlite = require("better-sqlite3") const HeatSync = require("heatsync") const passthrough = require("../src/passthrough") -const db = new sqlite("ooye.db") +const {getDatabase} = require("../src/db/database") +const db = getDatabase() const sync = new HeatSync({watchFS: false}) diff --git a/scripts/setup.js b/scripts/setup.js index 6bff293..b980ef1 100644 --- a/scripts/setup.js +++ b/scripts/setup.js @@ -34,7 +34,8 @@ if (fs.existsSync("db")) { } const passthrough = require("../src/passthrough") -const db = new sqlite("ooye.db") +const {getDatabase} = require("../src/db/database") +const db = getDatabase() const migrate = require("../src/db/migrate") const sync = new HeatSync({watchFS: false}) diff --git a/scripts/start-server.js b/scripts/start-server.js index 0d4753a..86e11ca 100755 --- a/scripts/start-server.js +++ b/scripts/start-server.js @@ -4,13 +4,13 @@ const {createServer} = require("http") const EventEmitter = require("events") const {createApp, createRouter, toNodeListener} = require("h3") -const sqlite = require("better-sqlite3") const migrate = require("../src/db/migrate") const HeatSync = require("heatsync") const {reg} = require("../src/matrix/read-registration") const passthrough = require("../src/passthrough") -const db = new sqlite("ooye.db") +const {getDatabase} = require("../src/db/database") +const db = getDatabase() const sync = new HeatSync() diff --git a/scripts/wal.js b/scripts/wal.js index 625f2ba..3f8cec9 100755 --- a/scripts/wal.js +++ b/scripts/wal.js @@ -1,7 +1,7 @@ #!/usr/bin/env node // @ts-check -const sqlite = require("better-sqlite3") -const db = new sqlite("ooye.db", {fileMustExist: true}) +const {getDatabase} = require("../src/db/database") +const db = getDatabase({fileMustExist: true}) db.pragma("journal_mode = wal") db.close() diff --git a/src/db/database.js b/src/db/database.js new file mode 100644 index 0000000..861fda8 --- /dev/null +++ b/src/db/database.js @@ -0,0 +1,16 @@ +// @ts-check + +const sqlite = require("better-sqlite3") +const path = require("path") + +/** + * Create a new SQLite database instance + * @param {import("better-sqlite3").Options} [options] - SQLite options + * @returns {import("better-sqlite3").Database} Database instance + */ +function getDatabase(options = {}) { + const dataDir = process.env.OOYE_DATA_DIR || process.cwd() + return new sqlite(path.join(dataDir, "ooye.db"), options) +} + +module.exports = {getDatabase} \ No newline at end of file diff --git a/start.js b/start.js index ca6212b..66fb920 100755 --- a/start.js +++ b/start.js @@ -2,13 +2,13 @@ // @ts-check const fs = require("fs") -const sqlite = require("better-sqlite3") const migrate = require("./src/db/migrate") const HeatSync = require("heatsync") const {reg} = require("./src/matrix/read-registration") const passthrough = require("./src/passthrough") -const db = new sqlite("ooye.db") +const {getDatabase} = require("./src/db/database") +const db = getDatabase() const sync = new HeatSync({watchFunction: fs.watchFile})