const MongoClient = require('mongodb').MongoClient; const mongodbUri = require('mongodb-uri'); let _db; function initDb(dbUrl, callback){ // eslint-disable-line if(_db){ console.warn('Trying to init DB again!'); return callback(null, _db); } MongoClient.connect(dbUrl, { useNewUrlParser: true, useUnifiedTopology: true }, connected); function connected(err, client){ if(err){ return callback(err); } // select DB const dbUriObj = mongodbUri.parse(dbUrl); let db; // if in testing, set the testing DB if(process.env.NODE_ENV === 'test'){ db = client.db('testingdb'); }else{ db = client.db(dbUriObj.database); } // setup the collections db.users = db.collection('users'); db.products = db.collection('products'); db.orders = db.collection('orders'); db.pages = db.collection('pages'); db.menu = db.collection('menu'); db.customers = db.collection('customers'); db.cart = db.collection('cart'); db.sessions = db.collection('sessions'); _db = db; return callback(null, _db); } }; function getDb(){ return _db; } module.exports = { getDb, initDb };