skyeye-svc-common-utils 1.0.75 → 1.0.77-dev.20240507
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/utils/baseClass/baseController.js +2 -0
- package/dist/utils/baseClass/baseController.js.map +1 -1
- package/dist/utils/middleware/startdbConnection.d.ts +1 -0
- package/dist/utils/middleware/startdbConnection.js +26 -1
- package/dist/utils/middleware/startdbConnection.js.map +1 -1
- package/package.json +2 -2
- package/src/utils/baseClass/baseController.ts +2 -0
- package/src/utils/middleware/startdbConnection.ts +33 -0
|
@@ -17,6 +17,7 @@ const typeorm_1 = require("typeorm");
|
|
|
17
17
|
const appConst_1 = require("../appConst");
|
|
18
18
|
const appConfig_1 = require("../appConfig");
|
|
19
19
|
const async_mutex_1 = require("async-mutex");
|
|
20
|
+
const startdbConnection_1 = require("../middleware/startdbConnection");
|
|
20
21
|
class BaseController {
|
|
21
22
|
startTransaction() {
|
|
22
23
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -94,6 +95,7 @@ class BaseController {
|
|
|
94
95
|
}).then(() => {
|
|
95
96
|
return (0, commonUtils_1.sendResponse)(res, next, baseControllerParameter.serviceResponse);
|
|
96
97
|
}).catch((err) => {
|
|
98
|
+
(0, startdbConnection_1.connectWithRetry)(null);
|
|
97
99
|
logger_1.logger.error(`BaseController/executeRest error: ${err}`);
|
|
98
100
|
baseControllerParameter.serviceResponse.isSuccess = false;
|
|
99
101
|
this.endTransaction(baseControllerParameter).then(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseController.js","sourceRoot":"","sources":["../../../src/utils/baseClass/baseController.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,gDAAsE;AACtE,6CAA0C;AAE1C,yCAAuD;AACvD,qCAAqD;AACrD,0CAA6C;AAC7C,4CAA+C;AAC/C,6CAAoC;
|
|
1
|
+
{"version":3,"file":"baseController.js","sourceRoot":"","sources":["../../../src/utils/baseClass/baseController.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,gDAAsE;AACtE,6CAA0C;AAE1C,yCAAuD;AACvD,qCAAqD;AACrD,0CAA6C;AAC7C,4CAA+C;AAC/C,6CAAoC;AACpC,uEAAmE;AAGnE,MAAsB,cAAc;IAI1B,gBAAgB;;YAClB,IAAI,WAAwB,CAAC;YAE7B,IAAI;gBACA,MAAM,UAAU,GAAG,IAAA,uBAAa,GAAE,CAAC;gBACnC,WAAW,GAAG,UAAU,CAAC,iBAAiB,EAAE,CAAC;gBAC7C,MAAM,WAAW,CAAC,gBAAgB,EAAE,CAAC;gBAErC,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;aACvC;YAAC,OAAO,KAAK,EAAE;gBACZ,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;oBACxC,IAAI;wBACA,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC;qBAC/B;oBAAC,OAAO,GAAG,EAAE;wBACV,eAAM,CAAC,KAAK,CAAC,kDAAkD,GAAG,EAAE,CAAC,CAAC;qBACzE;iBACJ;gBAED,OAAO,OAAO,CAAC,MAAM,CAAC,qEAAqE,KAAK,EAAE,CAAC,CAAC;aACvG;QACL,CAAC;KAAA;IAEK,cAAc,CAAC,uBAAgD;;YACjE,IAAI;gBACA,IAAG,CAAC,uBAAuB,CAAC,WAAW,EAAE;oBACrC,eAAM,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;oBAC3E,OAAO;iBACV;gBAED,IAAI,uBAAuB,CAAC,WAAW,CAAC,UAAU,EAAE;oBAChD,eAAM,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;iBACrF;gBAED,IAAI,uBAAuB,CAAC,WAAW,CAAC,mBAAmB,EAAE;oBACzD,IAAI,uBAAuB,CAAC,eAAe,CAAC,SAAS,EAAE;wBACnD,MAAM,uBAAuB,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;qBACjE;yBAAM;wBACH,MAAM,uBAAuB,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC;qBACnE;iBACJ;qBAAM;oBACH,eAAM,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;iBACzF;aACJ;YAAC,OAAO,GAAG,EAAE;gBACV,eAAM,CAAC,KAAK,CAAC,kCAAkC,GAAG,EAAE,CAAC,CAAC;aACzD;oBAAS;gBACN,IAAI;oBACA,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,UAAU,EAAE;wBACjD,MAAM,uBAAuB,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;qBACvD;iBACJ;gBAAC,OAAO,GAAG,EAAE;oBACV,eAAM,CAAC,KAAK,CAAC,gDAAgD,GAAG,EAAE,CAAC,CAAC;iBACvE;aACJ;QACL,CAAC;KAAA;IAEY,WAAW,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;;YACpE,eAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YAErC,IAAI,uBAAuB,GAA4B,IAAI,gCAAuB,EAAE,CAAC;YACrF,uBAAuB,CAAC,eAAe,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;YAE3H,IAAI;gBACA,uBAAuB,CAAC,QAAQ,GAAG,IAAA,yBAAW,EAAC,GAAG,CAAC,CAAC;gBACpD,IAAI,2BAAe,CAAC,SAAS,EAAE;oBAC3B,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE;wBACnC,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,WAAwB,EAAE,EAAE;4BAClD,uBAAuB,CAAC,WAAW,GAAG,WAAW,CAAC;4BAClD,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;wBAC/D,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;4BACT,OAAO,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;wBACxD,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;4BACT,OAAO,IAAA,0BAAY,EAAC,GAAG,EAAE,IAAI,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;wBAC5E,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;4BACpB,IAAA,oCAAgB,EAAC,IAAI,CAAC,CAAC;4BACvB,eAAM,CAAC,KAAK,CAAC,qCAAqC,GAAG,EAAE,CAAC,CAAC;4BACzD,uBAAuB,CAAC,eAAe,CAAC,SAAS,GAAG,KAAK,CAAC;4BAC1D,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gCACnD,IAAI,CAAC,GAAG,CAAC,CAAC;4BACd,CAAC,CAAC,CAAC;wBACP,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;iBACV;qBAAM;oBACH,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;wBACtD,OAAO,IAAA,0BAAY,EAAC,GAAG,EAAE,IAAI,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;oBAC5E,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;wBACpB,eAAM,CAAC,KAAK,CAAC,qCAAqC,GAAG,EAAE,CAAC,CAAC;wBACzD,uBAAuB,CAAC,eAAe,CAAC,SAAS,GAAG,KAAK,CAAC;wBAC1D,IAAI,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC,CAAC,CAAC;iBACV;aACJ;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,GAAG,CAAC,CAAC;aACb;YAED,eAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACzC,CAAC;KAAA;IAEY,WAAW,CAAC,IAAS,EAAE,QAAa;;YAC7C,IAAI,uBAAuB,GAA4B,IAAI,gCAAuB,EAAE,CAAC;YACrF,uBAAuB,CAAC,eAAe,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;YAE3H,IAAI;gBACA,uBAAuB,CAAC,QAAQ,GAAG,SAAS,CAAC;gBAE7C,MAAM,aAAa,GAAW,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,yBAAc,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;gBACzF,IAAI,CAAC,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,EAAE;oBACzC,MAAM,UAAU,GAAa,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACzD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,yBAAc,CAAC,UAAU,CAAC,MAAM,EAAE;wBAC/E,uBAAuB,CAAC,QAAQ,GAAG,MAAM,IAAA,uBAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;qBACtE;iBACJ;gBAED,IAAI,2BAAe,CAAC,SAAS,EAAE;oBAC3B,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,GAAS,EAAE;wBACzC,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,WAAwB,EAAE,EAAE;4BACtD,uBAAuB,CAAC,WAAW,GAAG,WAAW,CAAC;4BAClD,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;wBACnE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;4BACT,OAAO,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;wBACxD,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;4BACT,OAAO,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;wBACnE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;4BACpB,uBAAuB,CAAC,eAAe,CAAC,SAAS,GAAG,KAAK,CAAC;4BAC1D,uBAAuB,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC;4BACrD,uBAAuB,CAAC,eAAe,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;4BAE9D,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gCACnD,MAAM,GAAG,CAAC;4BACd,CAAC,CAAC,CAAC;wBACP,CAAC,CAAC,CAAC;wBAAA,CAAC;oBACR,CAAC,CAAA,CAAC,CAAC;iBACN;qBAAM;oBACH,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;wBAC9D,OAAO,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;oBACnE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;wBACpB,uBAAuB,CAAC,eAAe,CAAC,SAAS,GAAG,KAAK,CAAC;wBAC1D,uBAAuB,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC;wBACrD,uBAAuB,CAAC,eAAe,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;wBAE9D,MAAM,GAAG,CAAC;oBACd,CAAC,CAAC,CAAC;iBACN;aACJ;YAAC,OAAO,GAAG,EAAE;gBACV,eAAM,CAAC,KAAK,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAC;gBACnD,uBAAuB,CAAC,eAAe,CAAC,SAAS,GAAG,KAAK,CAAC;gBAC1D,uBAAuB,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC;gBACrD,OAAO,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;aAClE;QACL,CAAC;KAAA;;AAxJL,wCAyJC;AAvJU,oBAAK,GAAU,IAAI,mBAAK,EAAE,CAAC;AAuJrC,CAAC"}
|
|
@@ -9,11 +9,36 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.startConnection = void 0;
|
|
12
|
+
exports.startConnection = exports.connectWithRetry = void 0;
|
|
13
13
|
const typeorm_1 = require("typeorm");
|
|
14
14
|
const appConfig_1 = require("../appConfig");
|
|
15
15
|
const azureKeyVault_1 = require("../../lib/azure/azureKeyVault");
|
|
16
16
|
const logger_1 = require("../logger/logger");
|
|
17
|
+
const maxConnectionRetries = 1440; //6*60*60*1000/retryDelay; maximum retry to create a new connection in 6h
|
|
18
|
+
const retryDelay = 15000; // milliseconds
|
|
19
|
+
function connectWithRetry(entities, retriesLeft = maxConnectionRetries) {
|
|
20
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
21
|
+
const options = Object.assign(Object.assign({}, JSON.parse(yield (0, azureKeyVault_1.getKey)(appConfig_1.commonAppConfig.SqlConnectionConfigKey))), { synchronize: false, entities: entities });
|
|
22
|
+
if (appConfig_1.commonAppConfig.SqlEnable) {
|
|
23
|
+
(0, typeorm_1.createConnection)(options)
|
|
24
|
+
.then((connection) => __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
logger_1.logger.info("TypeORM connected");
|
|
26
|
+
}))
|
|
27
|
+
.catch((error) => __awaiter(this, void 0, void 0, function* () {
|
|
28
|
+
logger_1.logger.error("TypeORM connection error: ", error);
|
|
29
|
+
if (retriesLeft > 0) {
|
|
30
|
+
logger_1.logger.info(`Retrying connection. ${retriesLeft} retries left...`);
|
|
31
|
+
yield new Promise((resolve) => setTimeout(resolve, retryDelay));
|
|
32
|
+
yield connectWithRetry(entities, retriesLeft - 1);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
logger_1.logger.error("Max connection retries reached. Unable to connect to the database.");
|
|
36
|
+
}
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
exports.connectWithRetry = connectWithRetry;
|
|
17
42
|
function startConnection(entities) {
|
|
18
43
|
return __awaiter(this, void 0, void 0, function* () {
|
|
19
44
|
const options = Object.assign(Object.assign({}, JSON.parse(yield (0, azureKeyVault_1.getKey)(appConfig_1.commonAppConfig.SqlConnectionConfigKey))), { synchronize: false, entities: entities });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startdbConnection.js","sourceRoot":"","sources":["../../../src/utils/middleware/startdbConnection.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAA8D;AAC9D,4CAA+C;AAC/C,iEAAuD;AACvD,6CAA0C;AAE1C,SAAsB,eAAe,CAAC,QAAe;;QACjD,MAAM,OAAO,mCAEN,IAAI,CAAC,KAAK,CAAC,MAAM,IAAA,sBAAM,EAAC,2BAAe,CAAC,sBAAsB,CAAC,CAAC,KACnE,WAAW,EAAE,KAAK,EAClB,QAAQ,EAAE,QAAQ,GACrB,CAAC;QACF,IAAI,2BAAe,CAAC,SAAS,EAAE;YAC3B,IAAA,0BAAgB,EAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAM,UAAU,EAAC,EAAE;gBAC9C,eAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACrC,CAAC,CAAA,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,eAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC,CAAC;SACvE;IACL,CAAC;CAAA;AAZD,0CAYC"}
|
|
1
|
+
{"version":3,"file":"startdbConnection.js","sourceRoot":"","sources":["../../../src/utils/middleware/startdbConnection.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAA8D;AAC9D,4CAA+C;AAC/C,iEAAuD;AACvD,6CAA0C;AAE1C,MAAM,oBAAoB,GAAG,IAAI,CAAC,CAAC,yEAAyE;AAC5G,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,eAAe;AAEzC,SAAsB,gBAAgB,CACpC,QAAe,EACf,WAAW,GAAG,oBAAoB;;QAElC,MAAM,OAAO,mCACR,IAAI,CAAC,KAAK,CAAC,MAAM,IAAA,sBAAM,EAAC,2BAAe,CAAC,sBAAsB,CAAC,CAAC,KACnE,WAAW,EAAE,KAAK,EAClB,QAAQ,EAAE,QAAQ,GACnB,CAAC;QAEA,IAAI,2BAAe,CAAC,SAAS,EAAE;YAC7B,IAAA,0BAAgB,EAAC,OAAO,CAAC;iBACtB,IAAI,CAAC,CAAO,UAAU,EAAE,EAAE;gBACzB,eAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACnC,CAAC,CAAA,CAAC;iBACD,KAAK,CAAC,CAAO,KAAK,EAAE,EAAE;gBACnB,eAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;gBAClD,IAAI,WAAW,GAAG,CAAC,EAAE;oBACnB,eAAM,CAAC,IAAI,CAAC,wBAAwB,WAAW,kBAAkB,CAAC,CAAC;oBACnE,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;oBAChE,MAAM,gBAAgB,CAAC,QAAQ,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;iBACnD;qBAAM;oBACL,eAAM,CAAC,KAAK,CACV,oEAAoE,CACrE,CAAC;iBACH;YACL,CAAC,CAAA,CAAC,CAAC;SACN;IACL,CAAC;CAAA;AA5BD,4CA4BC;AAED,SAAsB,eAAe,CAAC,QAAe;;QACjD,MAAM,OAAO,mCAEN,IAAI,CAAC,KAAK,CAAC,MAAM,IAAA,sBAAM,EAAC,2BAAe,CAAC,sBAAsB,CAAC,CAAC,KACnE,WAAW,EAAE,KAAK,EAClB,QAAQ,EAAE,QAAQ,GACrB,CAAC;QACF,IAAI,2BAAe,CAAC,SAAS,EAAE;YAC3B,IAAA,0BAAgB,EAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAM,UAAU,EAAC,EAAE;gBAC9C,eAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACrC,CAAC,CAAA,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,eAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC,CAAC;SACvE;IACL,CAAC;CAAA;AAZD,0CAYC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skyeye-svc-common-utils",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.77-dev.20240507",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"node-fetch": "^2.6.0",
|
|
57
57
|
"nyc": "^15.1.0",
|
|
58
58
|
"rotating-file-stream": "^1.4.6",
|
|
59
|
-
"skyeye-common-const": "1.0.
|
|
59
|
+
"skyeye-common-const": "1.0.49",
|
|
60
60
|
"swagger-jsdoc": "^3.5.0",
|
|
61
61
|
"swagger-ui-express": "^4.1.3",
|
|
62
62
|
"ts-node": "^9.0.0",
|
|
@@ -7,6 +7,7 @@ import { QueryRunner, getConnection } from 'typeorm';
|
|
|
7
7
|
import { commonAppConst } from '../appConst';
|
|
8
8
|
import { commonAppConfig } from '../appConfig';
|
|
9
9
|
import { Mutex } from 'async-mutex';
|
|
10
|
+
import { connectWithRetry } from '../middleware/startdbConnection';
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
export abstract class BaseController {
|
|
@@ -86,6 +87,7 @@ export abstract class BaseController {
|
|
|
86
87
|
}).then(() => {
|
|
87
88
|
return sendResponse(res, next, baseControllerParameter.serviceResponse);
|
|
88
89
|
}).catch((err: Error) => {
|
|
90
|
+
connectWithRetry(null);
|
|
89
91
|
logger.error(`BaseController/executeRest error: ${err}`);
|
|
90
92
|
baseControllerParameter.serviceResponse.isSuccess = false;
|
|
91
93
|
this.endTransaction(baseControllerParameter).then(() => {
|
|
@@ -3,6 +3,39 @@ import { commonAppConfig } from '../appConfig';
|
|
|
3
3
|
import { getKey } from '../../lib/azure/azureKeyVault';
|
|
4
4
|
import { logger } from '../logger/logger';
|
|
5
5
|
|
|
6
|
+
const maxConnectionRetries = 1440; //6*60*60*1000/retryDelay; maximum retry to create a new connection in 6h
|
|
7
|
+
const retryDelay = 15000; // milliseconds
|
|
8
|
+
|
|
9
|
+
export async function connectWithRetry(
|
|
10
|
+
entities: any[],
|
|
11
|
+
retriesLeft = maxConnectionRetries
|
|
12
|
+
): Promise<void> {
|
|
13
|
+
const options: ConnectionOptions = {
|
|
14
|
+
...JSON.parse(await getKey(commonAppConfig.SqlConnectionConfigKey)),
|
|
15
|
+
synchronize: false,
|
|
16
|
+
entities: entities,
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
if (commonAppConfig.SqlEnable) {
|
|
20
|
+
createConnection(options)
|
|
21
|
+
.then(async (connection) => {
|
|
22
|
+
logger.info("TypeORM connected");
|
|
23
|
+
})
|
|
24
|
+
.catch(async (error) => {
|
|
25
|
+
logger.error("TypeORM connection error: ", error);
|
|
26
|
+
if (retriesLeft > 0) {
|
|
27
|
+
logger.info(`Retrying connection. ${retriesLeft} retries left...`);
|
|
28
|
+
await new Promise((resolve) => setTimeout(resolve, retryDelay));
|
|
29
|
+
await connectWithRetry(entities, retriesLeft - 1);
|
|
30
|
+
} else {
|
|
31
|
+
logger.error(
|
|
32
|
+
"Max connection retries reached. Unable to connect to the database."
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
6
39
|
export async function startConnection(entities: any[]) {
|
|
7
40
|
const options: ConnectionOptions =
|
|
8
41
|
{
|