UNPKG

@acadix/setup

Version:

Acadix Learning Management System backend application project setup

54 lines 2.39 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const config_1 = require("../../config"); const logger_1 = require("../../logger"); class DatabaseManager { constructor(env) { this.env = env; this.logger = (0, logger_1.Logger)(this.env); this.db = (0, config_1.DB)(Object.assign({}, this.env.DB)); } createDatabaseConnection() { return __awaiter(this, void 0, void 0, function* () { const maxRetries = 5; const retryDelay = 5000; let retries = 0; while (retries < maxRetries) { try { yield this.db.authenticate(); this.logger.info("Connection to the database has been established successfully"); return; // Connection succeeded, exit the function } catch (error) { this.logger.error(`Unable to connect to the database\n${error}`); retries++; yield new Promise((resolve) => setTimeout(resolve, retryDelay)); } } process.exit(1); }); } closeDatabaseConnection() { return __awaiter(this, void 0, void 0, function* () { try { yield this.db.close(); this.logger.info("Database connection closed."); } catch (error) { this.logger.error(`Error closing database connection: \n${error}`); process.exit(1); } }); } } exports.default = DatabaseManager; //# sourceMappingURL=connectDB.js.map