| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- const Settings = require('settings-sharelatex')
- const { MongoClient, ObjectId } = require('mongodb')
- const clientPromise = MongoClient.connect(
- Settings.mongo.url,
- Settings.mongo.options
- )
- let setupDbPromise
- async function waitForDb() {
- if (!setupDbPromise) {
- setupDbPromise = setupDb()
- }
- await setupDbPromise
- }
- const db = {}
- async function setupDb() {
- const internalDb = (await clientPromise).db()
- db.docHistory = internalDb.collection('docHistory')
- db.docHistoryIndex = internalDb.collection('docHistoryIndex')
- db.projectHistoryMetaData = internalDb.collection('projectHistoryMetaData')
- }
- async function closeDb() {
- let client
- try {
- client = await clientPromise
- } catch (e) {
- // there is nothing to close
- return
- }
- return client.close()
- }
- module.exports = {
- db,
- ObjectId,
- closeDb,
- waitForDb
- }
|