diff options
Diffstat (limited to 'bundle/src/Database.ts')
-rw-r--r-- | bundle/src/Database.ts | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/bundle/src/Database.ts b/bundle/src/Database.ts new file mode 100644 index 00000000..0efd2471 --- /dev/null +++ b/bundle/src/Database.ts @@ -0,0 +1,43 @@ +import fs from "fs"; +import { MongoMemoryServer } from "mongodb-memory-server"; +import path from "path"; +import exitHook from "async-exit-hook"; +console.log(process.arch, process.platform); +if (process.arch == "ia32") { + Object.defineProperty(process, "arch", { + value: "x64", + }); +} + +export async function setupDatabase() { + const dbPath = path.join(__dirname, "..", "..", "db"); + const dbName = "fosscord"; + const storageEngine = "wiredTiger"; + const port = 27020; + const ip = "127.0.0.1"; + var mongod: MongoMemoryServer; + fs.mkdirSync(dbPath, { recursive: true }); + + exitHook((callback: any) => { + (async () => { + console.log(`Stopping MongoDB ...`); + await mongod.stop(); + console.log(`Stopped MongoDB`); + callback(); + })(); + }); + + console.log(`[Database] starting ...`); + mongod = new MongoMemoryServer({ + instance: { + port, + ip, + dbName, + dbPath, + storageEngine, + auth: false, // by default `mongod` is started with '--noauth', start `mongod` with '--auth' + }, + }); + await mongod.start(); + process.env.MONGO_URL = mongod.getUri(dbName); +} |