UNPKG

multibridge

Version:

A multi-database connection framework with centralized configuration

49 lines (48 loc) 1.86 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createMongoDBConnection = createMongoDBConnection; const mongodb_1 = require("mongodb"); const loggers_1 = __importDefault(require("../utils/loggers")); /** * Sanitize MongoDB connection URI for logging (removes password) */ function sanitizeMongoURI(uri) { // Replace password in connection string with *** for logging return uri.replace(/:([^:@]+)@/, ":***@"); } async function createMongoDBConnection(config) { let uri; if (config.host.endsWith(".mongodb.net")) { // MongoDB Atlas (Cluster) using SRV uri = `mongodb+srv://${config.username}:${config.password}@${config.host}/${config.database}?authSource=admin`; } else { // Self-hosted MongoDB (Local/Remote) uri = `mongodb://${config.username}:${config.password}@${config.host}:${config.port ?? 27017}/${config.database}?authSource=admin`; } const sanitizedURI = sanitizeMongoURI(uri); const client = new mongodb_1.MongoClient(uri, { connectTimeoutMS: 10000, serverSelectionTimeoutMS: 10000, }); try { await client.connect(); loggers_1.default.info(`Connected to MongoDB`, { host: config.host, database: config.database, uri: sanitizedURI, // Log sanitized URI without password }); return { client, db: client.db(config.database) }; } catch (error) { loggers_1.default.error(`Error connecting to MongoDB: ${error.message}`, { host: config.host, database: config.database, uri: sanitizedURI, // Log sanitized URI without password }); throw error; } }