@topgroup/diginext
Version:
A BUILD SERVER & CLI to deploy apps to any Kubernetes clusters.
52 lines (51 loc) • 1.75 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.disconnect = exports.connect = void 0;
require("reflect-metadata");
const log_1 = require("diginext-utils/dist/xconsole/log");
const mongoose_1 = __importDefault(require("mongoose"));
const app_config_1 = require("../app.config");
const dbName = app_config_1.Config.DB_NAME;
let db;
async function connect(onConnected) {
// console.log("Config.DB_URI :>> ", Config.DB_URI);
// console.log("Config.DB_NAME :>> ", Config.DB_NAME);
try {
const mongoDB = await mongoose_1.default.connect(app_config_1.Config.DB_URI, {
dbName,
serverSelectionTimeoutMS: 5000,
retryWrites: true,
retryReads: true,
connectTimeoutMS: 10000,
socketTimeoutMS: 45000,
maxPoolSize: 10,
minPoolSize: 5, // Minimum connections to maintain
});
db = mongoDB;
if (typeof onConnected != "undefined")
onConnected(db, mongoDB.connection);
return db;
}
catch (e) {
console.error(e);
// Retry connection after a delay
setTimeout(() => connect(onConnected), 5000);
process.exit(1); // passing 1 - will exit the proccess with error
}
}
exports.connect = connect;
async function disconnect() {
try {
await mongoose_1.default.disconnect();
db = undefined;
}
catch (e) {
(0, log_1.logError)(`[DB_DISCONNECT]`, e);
}
}
exports.disconnect = disconnect;
const AppDatabase = { db, connect, disconnect };
exports.default = AppDatabase;