diff --git a/config/database.js b/config/database.js index 00be5bd..a2c19bc 100644 --- a/config/database.js +++ b/config/database.js @@ -1,18 +1,19 @@ const mongoose = require('mongoose'); const path = require('path'); const createPermissions = require('../utils/createPermissions'); +const fs = require('fs').promises; + mongoose.Promise = global.Promise; -// let tscFile = path.dirname('./global-bundle.pem'); -let tlsCAFile = path.join(__dirname, './global-bundle.pem'); +const tlsCAFile = path.join(__dirname, './global-bundle.pem'); +const USERNAME = process.env.MONGO_USERNAME; +const PASSWORD = process.env.MONGO_PASSWORD; -// MONGO_URI = process.env.MONGO_URI + tlsCAFile const connect = mongoose.connection; + const connectDB = async () => { connect.on('connected', async () => { console.log('MongoDB Connection Established'); - - // Call the function to create Admin Permissions createPermissions(); }); @@ -26,7 +27,16 @@ const connectDB = async () => { setTimeout(() => { mongoose.connect(process.env.MONGO_URI, { - tlsCAFile: require('fs').readFileSync(tlsCAFile), + tlsCAFile: tlsCAFile, + tls: process.env.MONGO_REPLSET ? true : false, + replicaSet: process.env.MONGO_REPLSET, + readPreference: process.env.MONGO_READ_PREFERENCE, + retryWrites: false, + + //required for the certificate shit + authMechanism: 'MONGODB-X509', + auth: { username: USERNAME, password: PASSWORD }, + useNewUrlParser: true, useUnifiedTopology: true, keepAlive: true, @@ -39,17 +49,28 @@ const connectDB = async () => { connect.on('close', () => { console.log('Mongo Connection Closed'); }); + connect.on('error', (error) => { console.log('Mongo Connection ERROR: ' + error); }); - await mongoose - .connect(process.env.MONGO_URI, { - tlsCAFile: require('fs').readFileSync(tlsCAFile), + try { + await mongoose.connect(process.env.MONGO_URI, { + tlsCAFile: tlsCAFile, + tls: process.env.MONGO_REPLSET ? true : false, + replicaSet: process.env.MONGO_REPLSET, + readPreference: process.env.MONGO_READ_PREFERENCE, + retryWrites: false, + //required for the certificate shit + authMechanism: 'MONGODB-X509', + auth: { username: USERNAME, password: PASSWORD }, + useNewUrlParser: true, useUnifiedTopology: true - }) - .catch((error) => console.log(error)); + }); + } catch (error) { + console.log(error); + } }; module.exports = { connectDB, connect };