const { MongoClient } = require('mongodb'); const { MONGO_HOST, MONGO_PORT, MONGO_USER, MONGO_PASS, MONGO_DB, } = process.env; const uri = `mongodb://${MONGO_USER}:${MONGO_PASS}@${MONGO_HOST}:${MONGO_PORT}/?maxPoolSize=20`; const getMongoConnection = async() => { const client = new MongoClient(uri); return await client.connect(); }; const getMongoDatabase = (client, db) => { const DB = db || MONGO_DB; return client.db(DB); }; const mongoExecute = async(fn, dbName = MONGO_DB) => { let conn; try { conn = await getMongoConnection(); const db = conn.db(dbName); const result = await fn(db, conn); return result; } catch (err) { console.log('MOMGODB ERROR:', err.message); } finally { if (conn) { await conn.close(); } } }; module.exports = { mongoExecute, getMongoConnection, getMongoDatabase, };