skyeye-svc-common-utils 2.0.0-dev0.18 → 2.0.0-dev0.19
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/index.d.ts +1 -2
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/azure/cognitiveSearch/QueryType.d.ts +8 -0
- package/dist/lib/azure/cognitiveSearch/QueryType.js +13 -0
- package/dist/lib/azure/cognitiveSearch/QueryType.js.map +1 -0
- package/dist/lib/azure/cognitiveSearch/SearchClient.d.ts +42 -0
- package/dist/lib/azure/cognitiveSearch/SearchClient.js +166 -0
- package/dist/lib/azure/cognitiveSearch/SearchClient.js.map +1 -0
- package/dist/lib/azure/cognitiveSearch/SearchFacets.d.ts +16 -0
- package/dist/lib/azure/cognitiveSearch/SearchFacets.js +3 -0
- package/dist/lib/azure/cognitiveSearch/SearchFacets.js.map +1 -0
- package/dist/lib/azure/cognitiveSearch/SearchFilter.d.ts +68 -0
- package/dist/lib/azure/cognitiveSearch/SearchFilter.js +125 -0
- package/dist/lib/azure/cognitiveSearch/SearchFilter.js.map +1 -0
- package/dist/lib/azure/cognitiveSearch/SearchMode.d.ts +9 -0
- package/dist/lib/azure/cognitiveSearch/SearchMode.js +14 -0
- package/dist/lib/azure/cognitiveSearch/SearchMode.js.map +1 -0
- package/dist/lib/azure/cognitiveSearch/SearchOption.d.ts +88 -0
- package/dist/lib/azure/cognitiveSearch/SearchOption.js +104 -0
- package/dist/lib/azure/cognitiveSearch/SearchOption.js.map +1 -0
- package/dist/lib/azure/cognitiveSearch/SearchOrder.d.ts +9 -0
- package/dist/lib/azure/cognitiveSearch/SearchOrder.js +3 -0
- package/dist/lib/azure/cognitiveSearch/SearchOrder.js.map +1 -0
- package/dist/lib/azure/cognitiveSearch/index.d.ts +7 -0
- package/dist/lib/azure/cognitiveSearch/index.js +24 -0
- package/dist/lib/azure/cognitiveSearch/index.js.map +1 -0
- package/dist/lib/azure/index.d.ts +7 -0
- package/dist/lib/azure/index.js +24 -0
- package/dist/lib/azure/index.js.map +1 -0
- package/dist/lib/fetch/index.d.ts +2 -0
- package/dist/lib/fetch/index.js +19 -0
- package/dist/lib/fetch/index.js.map +1 -0
- package/dist/lib/fetch/sendRequest.d.ts +7 -0
- package/dist/lib/fetch/sendRequest.js +25 -0
- package/dist/lib/fetch/sendRequest.js.map +1 -0
- package/dist/lib/fetch/sendRequest.test.d.ts +1 -0
- package/dist/lib/fetch/sendRequest.test.js +27 -0
- package/dist/lib/fetch/sendRequest.test.js.map +1 -0
- package/dist/lib/fetch/sendRequestWithTimeout.d.ts +9 -0
- package/dist/lib/fetch/sendRequestWithTimeout.js +53 -0
- package/dist/lib/fetch/sendRequestWithTimeout.js.map +1 -0
- package/dist/lib/fetch/sendRequestWithTimeout.test.d.ts +1 -0
- package/dist/lib/fetch/sendRequestWithTimeout.test.js +43 -0
- package/dist/lib/fetch/sendRequestWithTimeout.test.js.map +1 -0
- package/dist/lib/index.d.ts +4 -0
- package/dist/lib/index.js +21 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/logger/index.d.ts +2 -0
- package/dist/lib/logger/index.js +19 -0
- package/dist/lib/logger/index.js.map +1 -0
- package/dist/lib/logger/logger.d.ts +16 -0
- package/dist/lib/logger/logger.js +120 -0
- package/dist/lib/logger/logger.js.map +1 -0
- package/dist/lib/logger/morganLogger.d.ts +4 -0
- package/dist/lib/logger/morganLogger.js +27 -0
- package/dist/lib/logger/morganLogger.js.map +1 -0
- package/dist/lib/teams/LogMessage.d.ts +51 -0
- package/dist/lib/teams/LogMessage.js +33 -0
- package/dist/lib/teams/LogMessage.js.map +1 -0
- package/dist/lib/teams/broadcastLogMessage.d.ts +8 -0
- package/dist/lib/teams/broadcastLogMessage.js +81 -0
- package/dist/lib/teams/broadcastLogMessage.js.map +1 -0
- package/dist/lib/teams/broadcastLogMessage.test.d.ts +1 -0
- package/dist/lib/teams/broadcastLogMessage.test.js +25 -0
- package/dist/lib/teams/broadcastLogMessage.test.js.map +1 -0
- package/dist/lib/teams/index.d.ts +2 -0
- package/dist/lib/teams/index.js +19 -0
- package/dist/lib/teams/index.js.map +1 -0
- package/dist/test/setup-tests.d.ts +0 -0
- package/dist/test/setup-tests.js +3 -0
- package/dist/test/setup-tests.js.map +1 -0
- package/dist/types/ServiceResponse.d.ts +16 -0
- package/dist/types/ServiceResponse.js +3 -0
- package/dist/types/ServiceResponse.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.js +18 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/baseClass/appDataSource.d.ts +7 -0
- package/dist/utils/baseClass/appDataSource.js +31 -0
- package/dist/utils/baseClass/appDataSource.js.map +1 -0
- package/dist/utils/baseClass/baseController.js +8 -8
- package/dist/utils/baseClass/baseController.js.map +1 -1
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +19 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/middleware/loadConfig.d.ts +128 -0
- package/dist/utils/middleware/loadConfig.js +143 -0
- package/dist/utils/middleware/loadConfig.js.map +1 -0
- package/dist/utils/middleware/startdbConnection.js +2 -4
- package/dist/utils/middleware/startdbConnection.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +1 -2
- package/src/utils/baseClass/appDataSource.ts +23 -0
- package/src/utils/baseClass/baseController.ts +9 -9
- package/dist/utils/baseClass/dataSourceManager.d.ts +0 -11
- package/dist/utils/baseClass/dataSourceManager.js +0 -59
- package/dist/utils/baseClass/dataSourceManager.js.map +0 -1
- package/src/utils/baseClass/dataSourceManager.ts +0 -49
- package/src/utils/middleware/startdbConnection.ts +0 -20
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
var _a;
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.loadConfig = exports.environment = exports.appConfig = void 0;
|
|
17
|
+
const dotenv_1 = __importDefault(require("dotenv"));
|
|
18
|
+
const lib_1 = require("../../lib");
|
|
19
|
+
const logger_1 = require("../logger/logger");
|
|
20
|
+
const zod_1 = require("zod");
|
|
21
|
+
const appConst_1 = require("../appConst");
|
|
22
|
+
/**
|
|
23
|
+
* @description
|
|
24
|
+
* @property {string} appName - service's app name from package.json
|
|
25
|
+
* @property {string} version - service's version from package.json
|
|
26
|
+
* @property {enum} environment - current environment
|
|
27
|
+
* @property {string} keyVaultName - Azure key vault name
|
|
28
|
+
* @property {string} keyVaultSecretName - secret name of Azure key vault
|
|
29
|
+
* @todo migration to single typedef
|
|
30
|
+
*/
|
|
31
|
+
const zEnvFileAppConfig = zod_1.z.object({
|
|
32
|
+
appName: zod_1.z.string(),
|
|
33
|
+
version: zod_1.z.string(),
|
|
34
|
+
environment: appConst_1.zEnvironment,
|
|
35
|
+
keyVaultName: zod_1.z.string(),
|
|
36
|
+
keyVaultSecretName: zod_1.z.string()
|
|
37
|
+
}).strict();
|
|
38
|
+
/**
|
|
39
|
+
* @todo migration to single typedef
|
|
40
|
+
*/
|
|
41
|
+
const zElasticKeyVault = zod_1.z.object({
|
|
42
|
+
secretToken: zod_1.z.string(),
|
|
43
|
+
serverUrl: zod_1.z.string()
|
|
44
|
+
});
|
|
45
|
+
/**
|
|
46
|
+
* @todo migration to single typedef
|
|
47
|
+
*/
|
|
48
|
+
const zTeamsChannelWebHook = zod_1.z.object({
|
|
49
|
+
errorChannel: zod_1.z.string(),
|
|
50
|
+
warnChannel: zod_1.z.string()
|
|
51
|
+
});
|
|
52
|
+
/**
|
|
53
|
+
* @todo migration to single typedef
|
|
54
|
+
*/
|
|
55
|
+
const zTelemetry = zod_1.z.object({
|
|
56
|
+
teamsChannelWebHook: zTeamsChannelWebHook,
|
|
57
|
+
elasticKeyVault: zElasticKeyVault
|
|
58
|
+
});
|
|
59
|
+
/**
|
|
60
|
+
* @todo migration to single typedef
|
|
61
|
+
*/
|
|
62
|
+
const zSecretFileAppConfig = zod_1.z.object({
|
|
63
|
+
telemetry: zTelemetry,
|
|
64
|
+
serviceConfig: zod_1.z.any().nullable()
|
|
65
|
+
});
|
|
66
|
+
/**
|
|
67
|
+
* @todo move to loadConfig since all the environment fields should be loaded from appConfig
|
|
68
|
+
*/
|
|
69
|
+
exports.environment = (_a = process.env.NODE_ENV) !== null && _a !== void 0 ? _a : 'development';
|
|
70
|
+
/**
|
|
71
|
+
* @description preload for app configuration, once it is been called, the appConfig will be loaded and be freezed
|
|
72
|
+
* @param packagePath - optional, path of `package.json` in order to load app name and version
|
|
73
|
+
*/
|
|
74
|
+
const loadConfig = (packagePath) => __awaiter(void 0, void 0, void 0, function* () {
|
|
75
|
+
logger_1.logger.verbose('start /appConfig/preload()');
|
|
76
|
+
// load environment file
|
|
77
|
+
dotenv_1.default.config({ path: `${exports.environment}.env` });
|
|
78
|
+
/**
|
|
79
|
+
* To load the appName and the version, we read the package information in the following order:
|
|
80
|
+
* 1. check if the environment value is defined directly
|
|
81
|
+
* 2. check if environment given from npm is defined
|
|
82
|
+
* 3. check if value in package.json is defined
|
|
83
|
+
*/
|
|
84
|
+
const pkg = require(packagePath !== null && packagePath !== void 0 ? packagePath : `${process.env.PWD}/package.json`);
|
|
85
|
+
const appName = (() => {
|
|
86
|
+
if (!!process.env.APP_NAME) {
|
|
87
|
+
return process.env.APP_NAME;
|
|
88
|
+
}
|
|
89
|
+
if (!!process.env.npm_package_name) {
|
|
90
|
+
return process.env.npm_package_name;
|
|
91
|
+
}
|
|
92
|
+
if (!!pkg.name) {
|
|
93
|
+
return pkg.name;
|
|
94
|
+
}
|
|
95
|
+
return 'default-app-name';
|
|
96
|
+
})();
|
|
97
|
+
const version = (() => {
|
|
98
|
+
if (!!process.env.VERSION) {
|
|
99
|
+
return process.env.VERSION;
|
|
100
|
+
}
|
|
101
|
+
if (!!process.env.npm_package_version) {
|
|
102
|
+
return process.env.npm_package_version;
|
|
103
|
+
}
|
|
104
|
+
if (!!pkg.version) {
|
|
105
|
+
return pkg.version;
|
|
106
|
+
}
|
|
107
|
+
return '0.0.0';
|
|
108
|
+
})();
|
|
109
|
+
/**
|
|
110
|
+
* check the env which suppose to be hide as possible as it can,
|
|
111
|
+
* which is not allowed to define in-memory.
|
|
112
|
+
*/
|
|
113
|
+
if (process.env.AZURE_TENANT_ID === undefined || process.env.AZURE_CLIENT_ID === undefined || process.env.AZURE_CLIENT_SECRET === undefined) {
|
|
114
|
+
throw new Error('/appConfig/preload: missing Azure configuration');
|
|
115
|
+
}
|
|
116
|
+
const envFileAppConfig = {
|
|
117
|
+
appName,
|
|
118
|
+
version,
|
|
119
|
+
environment: exports.environment,
|
|
120
|
+
keyVaultName: process.env.KEYVAULT_NAME,
|
|
121
|
+
keyVaultSecretName: process.env.LIBRARY_KEY_VAULT_SECRET_NAME
|
|
122
|
+
};
|
|
123
|
+
// check envFileAppConfig
|
|
124
|
+
const envTypeCheck = zEnvFileAppConfig.safeParse(envFileAppConfig);
|
|
125
|
+
if (!envTypeCheck.success) {
|
|
126
|
+
throw new Error('/appConfig/preload: invalid schema of envFileAppConfig');
|
|
127
|
+
}
|
|
128
|
+
// check secretFileAppConfig
|
|
129
|
+
const rawSecretResp = yield (0, lib_1.getKeyVault)(envFileAppConfig.keyVaultName, envFileAppConfig.keyVaultSecretName);
|
|
130
|
+
if (!rawSecretResp.isSuccess) {
|
|
131
|
+
throw new Error(rawSecretResp.message);
|
|
132
|
+
}
|
|
133
|
+
const secretFileAppConfig = rawSecretResp.data;
|
|
134
|
+
const secretFileTypeCheck = zSecretFileAppConfig.safeParse(secretFileAppConfig);
|
|
135
|
+
if (!secretFileTypeCheck.success) {
|
|
136
|
+
throw new Error('/appConfig/preload: invalid schema of secretFileAppConfig');
|
|
137
|
+
}
|
|
138
|
+
exports.appConfig = Object.assign(Object.assign({}, envFileAppConfig), secretFileAppConfig);
|
|
139
|
+
Object.freeze(exports.appConfig);
|
|
140
|
+
logger_1.logger.verbose('end /appConfig/preload()');
|
|
141
|
+
});
|
|
142
|
+
exports.loadConfig = loadConfig;
|
|
143
|
+
//# sourceMappingURL=loadConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadConfig.js","sourceRoot":"","sources":["../../../src/utils/middleware/loadConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,18 +11,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.startConnection = void 0;
|
|
13
13
|
const typeorm_1 = require("typeorm");
|
|
14
|
-
const dataSourceManager_1 = require("../baseClass/dataSourceManager");
|
|
15
14
|
const appConfig_1 = require("../appConfig");
|
|
16
15
|
const azureKeyVault_1 = require("../../lib/azure/azureKeyVault");
|
|
17
16
|
const logger_1 = require("../logger/logger");
|
|
18
17
|
function startConnection(entities) {
|
|
19
18
|
return __awaiter(this, void 0, void 0, function* () {
|
|
20
19
|
const options = Object.assign(Object.assign({}, JSON.parse(yield (0, azureKeyVault_1.getKey)(appConfig_1.commonAppConfig.SqlConnectionConfigKey))), { synchronize: false, entities: entities });
|
|
21
|
-
const myDataSource = new typeorm_1.DataSource(options);
|
|
22
20
|
if (appConfig_1.commonAppConfig.SqlEnable) {
|
|
23
|
-
(0,
|
|
21
|
+
(0, typeorm_1.createConnection)(options).then((connection) => __awaiter(this, void 0, void 0, function* () {
|
|
24
22
|
logger_1.logger.info("TypeORM connected");
|
|
25
|
-
}).catch(error => logger_1.logger.info("TypeORM connection error: ", error));
|
|
23
|
+
})).catch(error => logger_1.logger.info("TypeORM connection error: ", error));
|
|
26
24
|
}
|
|
27
25
|
});
|
|
28
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startdbConnection.js","sourceRoot":"","sources":["../../../src/utils/middleware/startdbConnection.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skyeye-svc-common-utils",
|
|
3
|
-
"version": "2.0.0-dev0.
|
|
3
|
+
"version": "2.0.0-dev0.19",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"@azure/data-tables": "^13.2.2",
|
|
24
24
|
"@azure/identity": "latest",
|
|
25
25
|
"@azure/keyvault-secrets": "latest",
|
|
26
|
-
"@azure/service-bus": "7.9.
|
|
26
|
+
"@azure/service-bus": "7.9.2",
|
|
27
27
|
"@azure/storage-blob": "^12.1.2",
|
|
28
28
|
"@azure/storage-queue": "^12.0.2",
|
|
29
29
|
"@sendgrid/mail": "^7.7.0",
|
package/src/index.ts
CHANGED
|
@@ -7,10 +7,9 @@ export * from './utils/logger/morganLogger';
|
|
|
7
7
|
export * from './utils/middleware/handleError';
|
|
8
8
|
export * from './utils/middleware/isPublicUser';
|
|
9
9
|
export * from './utils/middleware/overwriteConst';
|
|
10
|
-
export * from './utils/middleware/startdbConnection';
|
|
11
10
|
export * from './utils/baseClass/baseController';
|
|
12
11
|
export * from './utils/baseClass/baseService';
|
|
13
|
-
export * from './utils/baseClass/
|
|
12
|
+
export * from './utils/baseClass/appDataSource';
|
|
14
13
|
export * from './interfaces/index';
|
|
15
14
|
export * from './lib/azure/azureKeyVault';
|
|
16
15
|
export * from './lib/azure/azureServiceBusClient';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { DataSource, DataSourceOptions } from 'typeorm';
|
|
2
|
+
import { logger } from '../logger/logger';
|
|
3
|
+
|
|
4
|
+
export class AppDataSource {
|
|
5
|
+
|
|
6
|
+
private static instance: DataSource;
|
|
7
|
+
|
|
8
|
+
private constructor() {}
|
|
9
|
+
|
|
10
|
+
public static getInstance() {
|
|
11
|
+
return AppDataSource.instance;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
public static async startConnection(options: DataSourceOptions) {
|
|
15
|
+
if (!AppDataSource.instance) {
|
|
16
|
+
AppDataSource.instance = new DataSource(options);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
if (!AppDataSource.instance.isInitialized) {
|
|
20
|
+
await AppDataSource.instance.initialize();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -7,7 +7,7 @@ import { QueryRunner } from 'typeorm';
|
|
|
7
7
|
import { commonAppConst } from '../appConst';
|
|
8
8
|
import { commonAppConfig } from '../appConfig';
|
|
9
9
|
import { Mutex } from 'async-mutex';
|
|
10
|
-
import {
|
|
10
|
+
import { AppDataSource } from './appDataSource';
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
export abstract class BaseController {
|
|
@@ -18,8 +18,8 @@ export abstract class BaseController {
|
|
|
18
18
|
let queryRunner: QueryRunner;
|
|
19
19
|
|
|
20
20
|
try {
|
|
21
|
-
|
|
22
|
-
queryRunner =
|
|
21
|
+
// Use queryRunner if transaction is needed
|
|
22
|
+
queryRunner = AppDataSource.getInstance().createQueryRunner();
|
|
23
23
|
await queryRunner.startTransaction();
|
|
24
24
|
|
|
25
25
|
return Promise.resolve(queryRunner);
|
|
@@ -59,12 +59,12 @@ export abstract class BaseController {
|
|
|
59
59
|
} catch (err) {
|
|
60
60
|
logger.error(`BaseController/endTransaction: ${err}`);
|
|
61
61
|
} finally {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
} catch (err) {
|
|
66
|
-
logger.error(`BaseController/endTransaction Release Error: ${err}`);
|
|
62
|
+
try {
|
|
63
|
+
if (!baseControllerParameter.queryRunner.isReleased) {
|
|
64
|
+
await baseControllerParameter.queryRunner.release();
|
|
67
65
|
}
|
|
66
|
+
} catch (err) {
|
|
67
|
+
logger.error(`BaseController/endTransaction Release Error: ${err}`);
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
}
|
|
@@ -149,7 +149,7 @@ export abstract class BaseController {
|
|
|
149
149
|
baseControllerParameter.serviceResponse.isSuccess = false;
|
|
150
150
|
baseControllerParameter.serviceResponse.error = true;
|
|
151
151
|
baseControllerParameter.serviceResponse.message = err.message;
|
|
152
|
-
|
|
152
|
+
|
|
153
153
|
throw err;
|
|
154
154
|
});
|
|
155
155
|
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { DataSource, DataSourceOptions } from 'typeorm';
|
|
2
|
-
export declare class DataSourceManager {
|
|
3
|
-
private static instance;
|
|
4
|
-
private dataSources;
|
|
5
|
-
private constructor();
|
|
6
|
-
static getInstance(): DataSourceManager;
|
|
7
|
-
createDataSource(name?: string, options?: DataSourceOptions): Promise<DataSource>;
|
|
8
|
-
getDataSource(dataSourceName?: string): DataSource;
|
|
9
|
-
}
|
|
10
|
-
export declare function getDataSource(dataSourceName?: string): DataSource;
|
|
11
|
-
export declare function createDataSource(options?: DataSourceOptions, name?: string): Promise<DataSource>;
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.createDataSource = exports.getDataSource = exports.DataSourceManager = void 0;
|
|
13
|
-
const typeorm_1 = require("typeorm");
|
|
14
|
-
const logger_1 = require("../logger/logger");
|
|
15
|
-
// to be used instead of getConnectionManager()
|
|
16
|
-
class DataSourceManager {
|
|
17
|
-
constructor() {
|
|
18
|
-
this.dataSources = new Map();
|
|
19
|
-
}
|
|
20
|
-
static getInstance() {
|
|
21
|
-
if (!DataSourceManager.instance) {
|
|
22
|
-
logger_1.logger.info(`##### No DataSource manager instance`);
|
|
23
|
-
DataSourceManager.instance = new DataSourceManager();
|
|
24
|
-
}
|
|
25
|
-
return DataSourceManager.instance;
|
|
26
|
-
}
|
|
27
|
-
createDataSource(name = 'default', options) {
|
|
28
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
-
const _options = options;
|
|
30
|
-
return new Promise((resolve, reject) => {
|
|
31
|
-
new typeorm_1.DataSource(_options).initialize()
|
|
32
|
-
.then((dataSource) => {
|
|
33
|
-
logger_1.logger.info(`Data Source Initialize ${name}`);
|
|
34
|
-
this.dataSources.set(name, dataSource);
|
|
35
|
-
const retrievedData = this.dataSources.get(name);
|
|
36
|
-
resolve(retrievedData);
|
|
37
|
-
})
|
|
38
|
-
.catch((e) => {
|
|
39
|
-
reject(e);
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
getDataSource(dataSourceName = 'default') {
|
|
45
|
-
logger_1.logger.info(`Retrieve data source with name ${dataSourceName}`);
|
|
46
|
-
return this.dataSources.get(dataSourceName);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
exports.DataSourceManager = DataSourceManager;
|
|
50
|
-
// to be used instead of getConnection()
|
|
51
|
-
function getDataSource(dataSourceName) {
|
|
52
|
-
return DataSourceManager.getInstance().getDataSource(dataSourceName);
|
|
53
|
-
}
|
|
54
|
-
exports.getDataSource = getDataSource;
|
|
55
|
-
function createDataSource(options, name) {
|
|
56
|
-
return DataSourceManager.getInstance().createDataSource(name, options);
|
|
57
|
-
}
|
|
58
|
-
exports.createDataSource = createDataSource;
|
|
59
|
-
//# sourceMappingURL=dataSourceManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dataSourceManager.js","sourceRoot":"","sources":["../../../src/utils/baseClass/dataSourceManager.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAiG;AACjG,6CAA0C;AAE1C,+CAA+C;AAC/C,MAAa,iBAAiB;IAI1B;QAFQ,gBAAW,GAA4B,IAAI,GAAG,EAAE,CAAC;IAElC,CAAC;IAEjB,MAAM,CAAC,WAAW;QACrB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;YAC9B,eAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;YACpD,iBAAiB,CAAC,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACzD,CAAC;QACD,OAAO,iBAAiB,CAAC,QAAQ,CAAC;IACtC,CAAC;IAEY,gBAAgB,CAAC,OAAe,SAAS,EAAE,OAA2B;;YAC/E,MAAM,QAAQ,GAAG,OAAO,CAAC;YACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACnC,IAAI,oBAAU,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE;qBACpC,IAAI,CAAC,CAAC,UAAsB,EAAE,EAAE;oBAC7B,eAAM,CAAC,IAAI,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;oBAC9C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;oBACvC,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACjD,OAAO,CAAC,aAAa,CAAC,CAAC;gBAC3B,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE;oBACd,MAAM,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC,CAAC,CAAA;YACN,CAAC,CAAC,CAAC;QACP,CAAC;KAAA;IAEM,aAAa,CAAC,iBAAyB,SAAS;QACnD,eAAM,CAAC,IAAI,CAAC,kCAAkC,cAAc,EAAE,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChD,CAAC;CAEJ;AAnCD,8CAmCC;AAED,wCAAwC;AACxC,SAAgB,aAAa,CAAC,cAAuB;IACjD,OAAO,iBAAiB,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;AACzE,CAAC;AAFD,sCAEC;AAED,SAAgB,gBAAgB,CAAC,OAA2B,EAAE,IAAa;IACvE,OAAO,iBAAiB,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC3E,CAAC;AAFD,4CAEC"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { DataSource, DataSourceOptions, EntityTarget, ObjectLiteral, Repository } from 'typeorm';
|
|
2
|
-
import { logger } from '../logger/logger';
|
|
3
|
-
|
|
4
|
-
// to be used instead of getConnectionManager()
|
|
5
|
-
export class DataSourceManager {
|
|
6
|
-
private static instance: DataSourceManager;
|
|
7
|
-
private dataSources: Map<string, DataSource> = new Map();
|
|
8
|
-
|
|
9
|
-
private constructor() {}
|
|
10
|
-
|
|
11
|
-
public static getInstance(): DataSourceManager {
|
|
12
|
-
if (!DataSourceManager.instance) {
|
|
13
|
-
logger.info(`##### No DataSource manager instance`);
|
|
14
|
-
DataSourceManager.instance = new DataSourceManager();
|
|
15
|
-
}
|
|
16
|
-
return DataSourceManager.instance;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
public async createDataSource(name: string = 'default', options?: DataSourceOptions): Promise<DataSource> {
|
|
20
|
-
const _options = options;
|
|
21
|
-
return new Promise((resolve, reject) => {
|
|
22
|
-
new DataSource(_options).initialize()
|
|
23
|
-
.then((dataSource: DataSource) => {
|
|
24
|
-
logger.info(`Data Source Initialize ${name}`);
|
|
25
|
-
this.dataSources.set(name, dataSource);
|
|
26
|
-
const retrievedData = this.dataSources.get(name);
|
|
27
|
-
resolve(retrievedData);
|
|
28
|
-
})
|
|
29
|
-
.catch((e: any) => {
|
|
30
|
-
reject(e);
|
|
31
|
-
})
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
public getDataSource(dataSourceName: string = 'default'): DataSource {
|
|
36
|
-
logger.info(`Retrieve data source with name ${dataSourceName}`);
|
|
37
|
-
return this.dataSources.get(dataSourceName);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// to be used instead of getConnection()
|
|
43
|
-
export function getDataSource(dataSourceName?: string): DataSource {
|
|
44
|
-
return DataSourceManager.getInstance().getDataSource(dataSourceName);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export function createDataSource(options?: DataSourceOptions, name?: string) {
|
|
48
|
-
return DataSourceManager.getInstance().createDataSource(name, options);
|
|
49
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { DataSourceOptions, DataSource } from 'typeorm';
|
|
2
|
-
import { createDataSource } from '../baseClass/dataSourceManager';
|
|
3
|
-
import { commonAppConfig } from '../appConfig';
|
|
4
|
-
import { getKey } from '../../lib/azure/azureKeyVault';
|
|
5
|
-
import { logger } from '../logger/logger';
|
|
6
|
-
|
|
7
|
-
export async function startConnection(entities: any[]) {
|
|
8
|
-
const options: DataSourceOptions =
|
|
9
|
-
{
|
|
10
|
-
...JSON.parse(await getKey(commonAppConfig.SqlConnectionConfigKey)),
|
|
11
|
-
synchronize: false,
|
|
12
|
-
entities: entities
|
|
13
|
-
};
|
|
14
|
-
const myDataSource = new DataSource(options);
|
|
15
|
-
if (commonAppConfig.SqlEnable) {
|
|
16
|
-
createDataSource(options).then(() => {
|
|
17
|
-
logger.info("TypeORM connected");
|
|
18
|
-
}).catch(error => logger.info("TypeORM connection error: ", error));
|
|
19
|
-
}
|
|
20
|
-
}
|