phx-node 1.0.141 → 1.0.143
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/lib/types/cronjob-manager.d.ts +1 -0
- package/dist/lib/types/cronjob-manager.js.map +1 -1
- package/dist/module/cronjob-manager/clone-cronjob.service.d.ts +5 -0
- package/dist/module/cronjob-manager/clone-cronjob.service.js +8 -0
- package/dist/module/cronjob-manager/clone-cronjob.service.js.map +1 -1
- package/dist/module/cronjob-manager/cronjob-manager.service.d.ts +6 -1
- package/dist/module/cronjob-manager/cronjob-manager.service.js +90 -5
- package/dist/module/cronjob-manager/cronjob-manager.service.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cronjob-manager.js","sourceRoot":"","sources":["../../../src/lib/types/cronjob-manager.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"cronjob-manager.js","sourceRoot":"","sources":["../../../src/lib/types/cronjob-manager.ts"],"names":[],"mappings":";;;AAqCA,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,+BAAmB,CAAA;IACnB,uCAA2B,CAAA;IAC3B,iCAAqB,CAAA;IACrB,yCAA6B,CAAA;AAC/B,CAAC,EALW,QAAQ,wBAAR,QAAQ,QAKnB"}
|
|
@@ -9,5 +9,10 @@ export declare class PHXCloneCronjob {
|
|
|
9
9
|
cronTime: string;
|
|
10
10
|
task: () => Promise<void>;
|
|
11
11
|
}): Promise<void>;
|
|
12
|
+
initV2({ cronName, cronTime, task, }: {
|
|
13
|
+
cronName: string;
|
|
14
|
+
cronTime: string;
|
|
15
|
+
task: () => Promise<void>;
|
|
16
|
+
}): Promise<void>;
|
|
12
17
|
private checkInSentry;
|
|
13
18
|
}
|
|
@@ -49,6 +49,14 @@ let PHXCloneCronjob = PHXCloneCronjob_1 = class PHXCloneCronjob {
|
|
|
49
49
|
job.start();
|
|
50
50
|
});
|
|
51
51
|
}
|
|
52
|
+
initV2(_a) {
|
|
53
|
+
return __awaiter(this, arguments, void 0, function* ({ cronName, cronTime, task, }) {
|
|
54
|
+
const jobKey = cronName;
|
|
55
|
+
const job = new cron_1.CronJob(cronTime, task);
|
|
56
|
+
this.schedulerRegistry.addCronJob(jobKey, job);
|
|
57
|
+
job.start();
|
|
58
|
+
});
|
|
59
|
+
}
|
|
52
60
|
checkInSentry(cronTime, taskService, monitorConfig, monitorSlug, hostName, logger) {
|
|
53
61
|
return __awaiter(this, void 0, void 0, function* () {
|
|
54
62
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clone-cronjob.service.js","sourceRoot":"","sources":["../../../src/module/cronjob-manager/clone-cronjob.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,+CAAqD;AACrD,+BAA+B;AAE/B,uEAAwE;AAEjE,IAAM,eAAe,uBAArB,MAAM,eAAe;IAE1B,YAA6B,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;QADhD,WAAM,GAAG,IAAI,eAAM,CAAC,iBAAe,CAAC,IAAI,CAAC,CAAC;QAInD,mBAAc,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAHU,CAAC;IAgB/D,IAAI;6DAAC,EACT,QAAQ,EACR,QAAQ,EACR,IAAI,GAKL;YACC,MAAM,MAAM,GAAG,QAAQ,CAAC;YAExB,MAAM,GAAG,GAAG,IAAI,cAAO,CAAC,QAAQ,EAAE,GAAG,EAAE;gBACrC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,2BAA2B,CAAC,CAAC;gBAEzD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;qBACtC,IAAI,CAAC,GAAS,EAAE;oBACf,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,0BAA0B,CAAC,CAAC;oBACxD,MAAM,IAAI,EAAE,CAAC;oBACb,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,sBAAsB,CAAC,CAAC;gBACtD,CAAC,CAAA,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,IAAI,QAAQ,mBAAmB,EAC/B,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,KAAI,KAAK,CACtB,CAAC;gBACJ,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC/C,GAAG,CAAC,KAAK,EAAE,CAAC;QACd,CAAC;KAAA;IAEa,aAAa,CACzB,QAAgB,EAChB,WAAgB,EAChB,aAAkC,EAClC,WAAmB,EACnB,QAAgB,EAChB,MAAW;;YAEX,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,GAAS,EAAE;oBAC1B,MAAM,CAAC,GAAG,CAAC,IAAI,WAAW,0BAA0B,CAAC,CAAC;oBACtD,MAAM,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACnC,CAAC,CAAA,CAAC;gBAEF,MAAM,IAAA,qCAAoB,EACxB,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,aAAa,CACd,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;KAAA;CACF,CAAA;
|
|
1
|
+
{"version":3,"file":"clone-cronjob.service.js","sourceRoot":"","sources":["../../../src/module/cronjob-manager/clone-cronjob.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,+CAAqD;AACrD,+BAA+B;AAE/B,uEAAwE;AAEjE,IAAM,eAAe,uBAArB,MAAM,eAAe;IAE1B,YAA6B,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;QADhD,WAAM,GAAG,IAAI,eAAM,CAAC,iBAAe,CAAC,IAAI,CAAC,CAAC;QAInD,mBAAc,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAHU,CAAC;IAgB/D,IAAI;6DAAC,EACT,QAAQ,EACR,QAAQ,EACR,IAAI,GAKL;YACC,MAAM,MAAM,GAAG,QAAQ,CAAC;YAExB,MAAM,GAAG,GAAG,IAAI,cAAO,CAAC,QAAQ,EAAE,GAAG,EAAE;gBACrC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,2BAA2B,CAAC,CAAC;gBAEzD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;qBACtC,IAAI,CAAC,GAAS,EAAE;oBACf,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,0BAA0B,CAAC,CAAC;oBACxD,MAAM,IAAI,EAAE,CAAC;oBACb,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,sBAAsB,CAAC,CAAC;gBACtD,CAAC,CAAA,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,IAAI,QAAQ,mBAAmB,EAC/B,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,KAAI,KAAK,CACtB,CAAC;gBACJ,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC/C,GAAG,CAAC,KAAK,EAAE,CAAC;QACd,CAAC;KAAA;IAEK,MAAM;6DAAC,EACX,QAAQ,EACR,QAAQ,EACR,IAAI,GAKL;YACC,MAAM,MAAM,GAAG,QAAQ,CAAC;YAExB,MAAM,GAAG,GAAG,IAAI,cAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAExC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC/C,GAAG,CAAC,KAAK,EAAE,CAAC;QACd,CAAC;KAAA;IAEa,aAAa,CACzB,QAAgB,EAChB,WAAgB,EAChB,aAAkC,EAClC,WAAmB,EACnB,QAAgB,EAChB,MAAW;;YAEX,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,GAAS,EAAE;oBAC1B,MAAM,CAAC,GAAG,CAAC,IAAI,WAAW,0BAA0B,CAAC,CAAC;oBACtD,MAAM,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACnC,CAAC,CAAA,CAAC;gBAEF,MAAM,IAAA,qCAAoB,EACxB,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,aAAa,CACd,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;KAAA;CACF,CAAA;AA3FY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;qCAGqC,4BAAiB;GAFtD,eAAe,CA2F3B"}
|
|
@@ -2,11 +2,16 @@ import { PHXCloneCronjob } from "./clone-cronjob.service";
|
|
|
2
2
|
import { ServiceItem } from "src/lib/types/cronjob-manager";
|
|
3
3
|
import { PHXConfigByHostNameService } from "src/module/cronjob-manager/config-by-hostname.service";
|
|
4
4
|
import { SchoolListService } from "./schoollist.service";
|
|
5
|
+
import { HttpService } from "@nestjs/axios";
|
|
6
|
+
import { ConfigService } from "@nestjs/config";
|
|
5
7
|
export declare class PHXCronjobManagerService {
|
|
6
8
|
private readonly cloneCronjob;
|
|
7
9
|
private readonly configByHostNameService;
|
|
8
10
|
private readonly schoolListService;
|
|
11
|
+
private readonly httpService;
|
|
12
|
+
private readonly configService;
|
|
9
13
|
private readonly logger;
|
|
10
|
-
constructor(cloneCronjob: PHXCloneCronjob, configByHostNameService: PHXConfigByHostNameService, schoolListService: SchoolListService);
|
|
14
|
+
constructor(cloneCronjob: PHXCloneCronjob, configByHostNameService: PHXConfigByHostNameService, schoolListService: SchoolListService, httpService: HttpService, configService: ConfigService);
|
|
11
15
|
init(listService: Array<ServiceItem>): Promise<void>;
|
|
16
|
+
initV2(listService: Array<ServiceItem>): Promise<void>;
|
|
12
17
|
}
|
|
@@ -25,11 +25,16 @@ const clone_cronjob_service_1 = require("./clone-cronjob.service");
|
|
|
25
25
|
const config_by_hostname_service_1 = require("./config-by-hostname.service");
|
|
26
26
|
const schoollist_service_1 = require("./schoollist.service");
|
|
27
27
|
const query_1 = require("./query");
|
|
28
|
+
const rxjs_1 = require("rxjs");
|
|
29
|
+
const axios_1 = require("@nestjs/axios");
|
|
30
|
+
const config_1 = require("@nestjs/config");
|
|
28
31
|
let PHXCronjobManagerService = PHXCronjobManagerService_1 = class PHXCronjobManagerService {
|
|
29
|
-
constructor(cloneCronjob, configByHostNameService, schoolListService) {
|
|
32
|
+
constructor(cloneCronjob, configByHostNameService, schoolListService, httpService, configService) {
|
|
30
33
|
this.cloneCronjob = cloneCronjob;
|
|
31
34
|
this.configByHostNameService = configByHostNameService;
|
|
32
35
|
this.schoolListService = schoolListService;
|
|
36
|
+
this.httpService = httpService;
|
|
37
|
+
this.configService = configService;
|
|
33
38
|
this.logger = new common_1.Logger(PHXCronjobManagerService_1.name);
|
|
34
39
|
}
|
|
35
40
|
init(listService) {
|
|
@@ -42,7 +47,6 @@ let PHXCronjobManagerService = PHXCronjobManagerService_1 = class PHXCronjobMana
|
|
|
42
47
|
this.schoolListService.getAllSchool(),
|
|
43
48
|
this.configByHostNameService.getCronConfig(),
|
|
44
49
|
]);
|
|
45
|
-
console.log('listHostName', listHostName);
|
|
46
50
|
}
|
|
47
51
|
catch (error) {
|
|
48
52
|
this.logger.error("Fail to get config cron", error);
|
|
@@ -61,8 +65,12 @@ let PHXCronjobManagerService = PHXCronjobManagerService_1 = class PHXCronjobMana
|
|
|
61
65
|
return;
|
|
62
66
|
}
|
|
63
67
|
for (const { hostname, school_id, isTenantMode } of listHostName) {
|
|
64
|
-
const hostnameConfig = isTenantMode
|
|
65
|
-
|
|
68
|
+
const hostnameConfig = isTenantMode
|
|
69
|
+
? query_1.HOSTNAME_MULTI_TESTING
|
|
70
|
+
: hostname;
|
|
71
|
+
const hostnameRun = isTenantMode
|
|
72
|
+
? `${query_1.HOSTNAME_MULTI_TESTING}?tenant_id=${school_id}`
|
|
73
|
+
: hostname;
|
|
66
74
|
const configItem = listConfigCronjobByHostname.find((item) => (item === null || item === void 0 ? void 0 : item.school.hostname) === hostnameConfig);
|
|
67
75
|
if (!configItem) {
|
|
68
76
|
this.logger.error(`Chưa cấu hình cronjob cho hostname: ${hostnameConfig}`);
|
|
@@ -91,12 +99,89 @@ let PHXCronjobManagerService = PHXCronjobManagerService_1 = class PHXCronjobMana
|
|
|
91
99
|
}
|
|
92
100
|
});
|
|
93
101
|
}
|
|
102
|
+
initV2(listService) {
|
|
103
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
104
|
+
this.logger.log("Running get list school");
|
|
105
|
+
let listHostName = [];
|
|
106
|
+
let listConfigCronjobByHostname = [];
|
|
107
|
+
try {
|
|
108
|
+
[listHostName, listConfigCronjobByHostname] = yield Promise.all([
|
|
109
|
+
this.schoolListService.getAllSchool(),
|
|
110
|
+
this.configByHostNameService.getCronConfig(),
|
|
111
|
+
]);
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
this.logger.error("Fail to get config cron", error);
|
|
115
|
+
}
|
|
116
|
+
if (listHostName.length === 0 || listConfigCronjobByHostname.length === 0) {
|
|
117
|
+
this.logger.warn("Config cronjob is empty!");
|
|
118
|
+
}
|
|
119
|
+
for (const { cronName, cronTime, eventPattern } of listService) {
|
|
120
|
+
yield this.cloneCronjob.initV2({
|
|
121
|
+
cronName,
|
|
122
|
+
cronTime,
|
|
123
|
+
task: () => __awaiter(this, void 0, void 0, function* () {
|
|
124
|
+
var _a, _b;
|
|
125
|
+
if (listHostName.length === 0 ||
|
|
126
|
+
listConfigCronjobByHostname.length === 0) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
for (const { hostname, school_id, isTenantMode } of listHostName) {
|
|
130
|
+
const hostnameConfig = isTenantMode
|
|
131
|
+
? query_1.HOSTNAME_MULTI_TESTING
|
|
132
|
+
: hostname;
|
|
133
|
+
const hostnameRun = isTenantMode
|
|
134
|
+
? `${query_1.HOSTNAME_MULTI_TESTING}?tenant_id=${school_id}`
|
|
135
|
+
: hostname;
|
|
136
|
+
const configItem = listConfigCronjobByHostname.find((item) => (item === null || item === void 0 ? void 0 : item.school.hostname) === hostnameConfig);
|
|
137
|
+
if (!configItem) {
|
|
138
|
+
this.logger.error(`Chưa cấu hình cronjob cho hostname: ${hostnameConfig}`);
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
const runType = configItem.cronjob_config_type_run.code;
|
|
142
|
+
const listCronName = (_b = (_a = configItem.metadata) === null || _a === void 0 ? void 0 : _a.list_cron_name) !== null && _b !== void 0 ? _b : [];
|
|
143
|
+
const isCronJobEnable = this.configByHostNameService.checkCronjobEnable({
|
|
144
|
+
runType,
|
|
145
|
+
cronName,
|
|
146
|
+
listCronName,
|
|
147
|
+
});
|
|
148
|
+
if (!isCronJobEnable)
|
|
149
|
+
continue;
|
|
150
|
+
try {
|
|
151
|
+
this.logger.log(`[${hostnameRun}, ${cronName}] start processing`);
|
|
152
|
+
const producerApi = this.configService.get("PRODUCER_API");
|
|
153
|
+
if (!producerApi) {
|
|
154
|
+
const errorMessage = `${hostname}: PRODUCER_API is not configured`;
|
|
155
|
+
this.logger.debug(errorMessage);
|
|
156
|
+
throw new Error(errorMessage);
|
|
157
|
+
}
|
|
158
|
+
yield (0, rxjs_1.lastValueFrom)(this.httpService.post(`${producerApi}/${eventPattern}`, {
|
|
159
|
+
hostname: hostnameRun,
|
|
160
|
+
cronName,
|
|
161
|
+
}, {
|
|
162
|
+
headers: {
|
|
163
|
+
hostname,
|
|
164
|
+
},
|
|
165
|
+
}));
|
|
166
|
+
this.logger.log(`[${hostnameRun}, ${cronName}] enqueue completed`);
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
this.logger.error(`[${hostnameRun}, ${cronName}] failed`, (error === null || error === void 0 ? void 0 : error.stack) || error);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}),
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
}
|
|
94
177
|
};
|
|
95
178
|
exports.PHXCronjobManagerService = PHXCronjobManagerService;
|
|
96
179
|
exports.PHXCronjobManagerService = PHXCronjobManagerService = PHXCronjobManagerService_1 = __decorate([
|
|
97
180
|
(0, common_1.Injectable)(),
|
|
98
181
|
__metadata("design:paramtypes", [clone_cronjob_service_1.PHXCloneCronjob,
|
|
99
182
|
config_by_hostname_service_1.PHXConfigByHostNameService,
|
|
100
|
-
schoollist_service_1.SchoolListService
|
|
183
|
+
schoollist_service_1.SchoolListService,
|
|
184
|
+
axios_1.HttpService,
|
|
185
|
+
config_1.ConfigService])
|
|
101
186
|
], PHXCronjobManagerService);
|
|
102
187
|
//# sourceMappingURL=cronjob-manager.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cronjob-manager.service.js","sourceRoot":"","sources":["../../../src/module/cronjob-manager/cronjob-manager.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,mEAA0D;AAO1D,6EAAmG;AACnG,6DAAyD;AACzD,mCAAiD;
|
|
1
|
+
{"version":3,"file":"cronjob-manager.service.js","sourceRoot":"","sources":["../../../src/module/cronjob-manager/cronjob-manager.service.ts"],"names":[],"mappings":"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"}
|