44 lines
1.0 KiB
TypeScript
44 lines
1.0 KiB
TypeScript
import fs from "fs";
|
|
import { MongoMemoryServer } from "mongodb-memory-server";
|
|
import path from "path";
|
|
import exitHook from "async-exit-hook";
|
|
|
|
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);
|
|
}
|