MongoDBConnector.js 820 B

123456789101112131415161718192021222324252627282930313233343536
  1. const { MongoClient } = require('mongodb');
  2. const { createLogger } = require('./logger');
  3. const log = createLogger('mongodb');
  4. const MONGODB_URL = process.env.MONGODB_URL || 'mongodb://mongodb:27017';
  5. const DB_NAME = process.env.MONGODB_DB || 'socialmedia';
  6. let client = null;
  7. let db = null;
  8. async function connect() {
  9. if (db) return db;
  10. client = new MongoClient(MONGODB_URL);
  11. await client.connect();
  12. db = client.db(DB_NAME);
  13. log.info({ action: 'connect', outcome: 'success', database: DB_NAME });
  14. return db;
  15. }
  16. async function getDb() {
  17. if (!db) await connect();
  18. return db;
  19. }
  20. async function disconnect() {
  21. if (client) {
  22. await client.close();
  23. client = null;
  24. db = null;
  25. log.info({ action: 'disconnect', outcome: 'success' });
  26. }
  27. }
  28. module.exports = { connect, getDb, disconnect };