Newer
Older
percord / bundle / src / Database.ts
@Flam3rboy Flam3rboy on 14 Aug 2021 1 KB :art: clean up server bundle
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);
}