summary refs log tree commit diff
path: root/bundle/src/Database.ts
diff options
context:
space:
mode:
Diffstat (limited to 'bundle/src/Database.ts')
-rw-r--r--bundle/src/Database.ts43
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);
+}