phx-node 1.0.123 → 1.0.125

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.
@@ -1,9 +1,13 @@
1
1
  import { SchedulerRegistry } from "@nestjs/schedule";
2
- import { CreateCronjobSettings } from "src/lib/types/cronjob-manager";
3
2
  export declare class PHXCloneCronjob {
4
3
  private readonly schedulerRegistry;
5
4
  private readonly logger;
6
5
  constructor(schedulerRegistry: SchedulerRegistry);
7
- init(cronjobSettings: CreateCronjobSettings): Promise<void>;
6
+ private executionQueue;
7
+ init({ cronName, cronTime, task, }: {
8
+ cronName: string;
9
+ cronTime: string;
10
+ task: () => Promise<void>;
11
+ }): Promise<void>;
8
12
  private checkInSentry;
9
13
  }
@@ -28,16 +28,24 @@ let PHXCloneCronjob = PHXCloneCronjob_1 = class PHXCloneCronjob {
28
28
  constructor(schedulerRegistry) {
29
29
  this.schedulerRegistry = schedulerRegistry;
30
30
  this.logger = new common_1.Logger(PHXCloneCronjob_1.name);
31
+ this.executionQueue = Promise.resolve();
31
32
  }
32
- init(cronjobSettings) {
33
- return __awaiter(this, void 0, void 0, function* () {
34
- const { cronTime, cronName, schoolCode, hostName, taskService, } = cronjobSettings;
35
- const job = new cron_1.CronJob(cronTime, () => __awaiter(this, void 0, void 0, function* () {
36
- const monitorSlug = `${schoolCode.toLowerCase()}-${cronName}`;
37
- this.logger.log(`[${hostName}, ${monitorSlug}] cron job is running...`);
38
- yield taskService.init(hostName);
39
- }));
40
- this.schedulerRegistry.addCronJob(`${schoolCode}_${cronName}`, job);
33
+ init(_a) {
34
+ return __awaiter(this, arguments, void 0, function* ({ cronName, cronTime, task, }) {
35
+ const jobKey = cronName;
36
+ const job = new cron_1.CronJob(cronTime, () => {
37
+ this.logger.log(`[${cronName}] cron job added to queue`);
38
+ this.executionQueue = this.executionQueue
39
+ .then(() => __awaiter(this, void 0, void 0, function* () {
40
+ this.logger.log(`[${cronName}] cron job is running...`);
41
+ yield task();
42
+ this.logger.log(`[${cronName}] cron job completed`);
43
+ }))
44
+ .catch((error) => {
45
+ this.logger.error(`[${cronName}] cron job failed`, (error === null || error === void 0 ? void 0 : error.stack) || error);
46
+ });
47
+ });
48
+ this.schedulerRegistry.addCronJob(jobKey, job);
41
49
  job.start();
42
50
  });
43
51
  }
@@ -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;AAG/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;IACS,CAAC;IAa/D,IAAI,CAAC,eAAsC;;YAC/C,MAAM,EACJ,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,WAAW,GAEZ,GAAG,eAAe,CAAC;YAEpB,MAAM,GAAG,GAAG,IAAI,cAAO,CAAC,QAAQ,EAAE,GAAS,EAAE;gBAC3C,MAAM,WAAW,GAAW,GAAG,UAAU,CAAC,WAAW,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAEtE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,WAAW,0BAA0B,CAAC,CAAC;gBACxE,MAAM,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnC,CAAC,CAAA,CAAC,CAAC;YAEH,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,GAAG,UAAU,IAAI,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC;YACpE,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;AA5DY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;qCAGqC,4BAAiB;GAFtD,eAAe,CA4D3B"}
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;AA1EY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;qCAGqC,4BAAiB;GAFtD,eAAe,CA0E3B"}
@@ -33,38 +33,46 @@ let PHXCronjobManagerService = PHXCronjobManagerService_1 = class PHXCronjobMana
33
33
  }
34
34
  init(listService) {
35
35
  return __awaiter(this, void 0, void 0, function* () {
36
- var _a, _b;
37
- const listHostName = yield this.hostnameService.getListHostname();
38
- const listConfigCronjobByHostname = yield this.configByHostNameService.getCronConfig();
39
- const hostNameLength = listHostName.length;
40
- if (hostNameLength === 0 || !listConfigCronjobByHostname)
41
- return;
42
- for (const { school_code, hostname } of listHostName) {
43
- for (const { cronName, cronTime, taskService, monitorConfig, } of listService) {
44
- const configItem = listConfigCronjobByHostname.find((item) => (item === null || item === void 0 ? void 0 : item.school.hostname) === hostname);
45
- if (configItem) {
46
- const runType = configItem.cronjob_config_type_run.code;
47
- const listCronName = (_b = (_a = configItem.metadata) === null || _a === void 0 ? void 0 : _a.list_cron_name) !== null && _b !== void 0 ? _b : [];
48
- const isCronJobEnable = this.configByHostNameService.checkCronjobEnable({
49
- runType,
50
- cronName,
51
- listCronName,
52
- });
53
- if (isCronJobEnable) {
54
- yield this.cloneCronjob.init({
36
+ for (const { cronName, cronTime, taskService } of listService) {
37
+ yield this.cloneCronjob.init({
38
+ cronName,
39
+ cronTime,
40
+ task: () => __awaiter(this, void 0, void 0, function* () {
41
+ var _a, _b;
42
+ const [listHostName, listConfigCronjobByHostname] = yield Promise.all([
43
+ this.hostnameService.getListHostname(),
44
+ this.configByHostNameService.getCronConfig(),
45
+ ]);
46
+ if (listHostName.length === 0 ||
47
+ listConfigCronjobByHostname.length === 0) {
48
+ return;
49
+ }
50
+ for (const { school_code, hostname } of listHostName) {
51
+ const configItem = listConfigCronjobByHostname.find((item) => (item === null || item === void 0 ? void 0 : item.school.hostname) === hostname);
52
+ if (!configItem) {
53
+ this.logger.error(`Chưa cấu hình cronjob cho hostname: ${hostname}`);
54
+ continue;
55
+ }
56
+ const runType = configItem.cronjob_config_type_run.code;
57
+ const listCronName = (_b = (_a = configItem.metadata) === null || _a === void 0 ? void 0 : _a.list_cron_name) !== null && _b !== void 0 ? _b : [];
58
+ const isCronJobEnable = this.configByHostNameService.checkCronjobEnable({
59
+ runType,
55
60
  cronName,
56
- schoolCode: school_code,
57
- hostName: hostname,
58
- cronTime,
59
- taskService,
60
- monitorConfig,
61
+ listCronName,
61
62
  });
63
+ if (!isCronJobEnable)
64
+ continue;
65
+ try {
66
+ this.logger.log(`[${hostname}, ${school_code}, ${cronName}] start processing`);
67
+ yield taskService.init(hostname);
68
+ this.logger.log(`[${hostname}, ${school_code}, ${cronName}] completed`);
69
+ }
70
+ catch (error) {
71
+ this.logger.error(`[${hostname}, ${school_code}, ${cronName}] failed`, (error === null || error === void 0 ? void 0 : error.stack) || error);
72
+ }
62
73
  }
63
- }
64
- else {
65
- this.logger.error(`Chưa cấu hình cronjob cho hostname: ${hostname}`);
66
- }
67
- }
74
+ }),
75
+ });
68
76
  }
69
77
  });
70
78
  }
@@ -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;AAM1D,mEAAkE;AAClE,6EAAmG;AAG5F,IAAM,wBAAwB,gCAA9B,MAAM,wBAAwB;IAGnC,YACmB,YAA6B,EAC7B,eAAmC,EACnC,uBAAmD;QAFnD,iBAAY,GAAZ,YAAY,CAAiB;QAC7B,oBAAe,GAAf,eAAe,CAAoB;QACnC,4BAAuB,GAAvB,uBAAuB,CAA4B;QALrD,WAAM,GAAG,IAAI,eAAM,CAAC,0BAAwB,CAAC,IAAI,CAAC,CAAC;IAMjE,CAAC;IAEE,IAAI,CAAC,WAA+B;;;YACxC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC;YAElE,MAAM,2BAA2B,GAC/B,MAAM,IAAI,CAAC,uBAAuB,CAAC,aAAa,EAAE,CAAC;YAErD,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC;YAE3C,IAAI,cAAc,KAAK,CAAC,IAAI,CAAC,2BAA2B;gBAAE,OAAO;YAGjE,KAAK,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,YAAY,EAAE,CAAC;gBACrD,KAAK,MAAM,EACT,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,aAAa,GACd,IAAI,WAAW,EAAE,CAAC;oBACjB,MAAM,UAAU,GAAG,2BAA2B,CAAC,IAAI,CACjD,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,QAAQ,MAAK,QAAQ,CAC7C,CAAC;oBAEF,IAAI,UAAU,EAAE,CAAC;wBACf,MAAM,OAAO,GAAa,UAAU,CAAC,uBAAuB,CAAC,IAAI,CAAC;wBAClE,MAAM,YAAY,GAAG,MAAA,MAAA,UAAU,CAAC,QAAQ,0CAAE,cAAc,mCAAI,EAAE,CAAC;wBAE/D,MAAM,eAAe,GACnB,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,CAAC;4BAC9C,OAAO;4BACP,QAAQ;4BACR,YAAY;yBACb,CAAC,CAAC;wBAEL,IAAI,eAAe,EAAE,CAAC;4BACpB,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;gCAC3B,QAAQ;gCACR,UAAU,EAAE,WAAW;gCACvB,QAAQ,EAAE,QAAQ;gCAClB,QAAQ;gCACR,WAAW;gCACX,aAAa;6BACd,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,QAAQ,EAAE,CAAC,CAAC;oBACvE,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;KAAA;CACF,CAAA;AA1DY,4DAAwB;mCAAxB,wBAAwB;IADpC,IAAA,mBAAU,GAAE;qCAKsB,uCAAe;QACZ,qCAAkB;QACV,uDAA0B;GAN3D,wBAAwB,CA0DpC"}
1
+ {"version":3,"file":"cronjob-manager.service.js","sourceRoot":"","sources":["../../../src/module/cronjob-manager/cronjob-manager.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,mEAA0D;AAM1D,mEAAkE;AAClE,6EAAmG;AAG5F,IAAM,wBAAwB,gCAA9B,MAAM,wBAAwB;IAGnC,YACmB,YAA6B,EAC7B,eAAmC,EACnC,uBAAmD;QAFnD,iBAAY,GAAZ,YAAY,CAAiB;QAC7B,oBAAe,GAAf,eAAe,CAAoB;QACnC,4BAAuB,GAAvB,uBAAuB,CAA4B;QALrD,WAAM,GAAG,IAAI,eAAM,CAAC,0BAAwB,CAAC,IAAI,CAAC,CAAC;IAMjE,CAAC;IAEE,IAAI,CAAC,WAA+B;;YACxC,KAAK,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,WAAW,EAAE,CAAC;gBAC9D,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;oBAC3B,QAAQ;oBACR,QAAQ;oBACR,IAAI,EAAE,GAAS,EAAE;;wBACf,MAAM,CAAC,YAAY,EAAE,2BAA2B,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CACnE;4BACE,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE;4BACtC,IAAI,CAAC,uBAAuB,CAAC,aAAa,EAAE;yBAC7C,CACF,CAAC;wBAEF,IACE,YAAY,CAAC,MAAM,KAAK,CAAC;4BACzB,2BAA2B,CAAC,MAAM,KAAK,CAAC,EACxC,CAAC;4BACD,OAAO;wBACT,CAAC;wBAED,KAAK,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,YAAY,EAAE,CAAC;4BACrD,MAAM,UAAU,GAAG,2BAA2B,CAAC,IAAI,CACjD,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,QAAQ,MAAK,QAAQ,CAC7C,CAAC;4BAEF,IAAI,CAAC,UAAU,EAAE,CAAC;gCAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,uCAAuC,QAAQ,EAAE,CAClD,CAAC;gCACF,SAAS;4BACX,CAAC;4BAED,MAAM,OAAO,GAAa,UAAU,CAAC,uBAAuB,CAAC,IAAI,CAAC;4BAClE,MAAM,YAAY,GAAG,MAAA,MAAA,UAAU,CAAC,QAAQ,0CAAE,cAAc,mCAAI,EAAE,CAAC;4BAE/D,MAAM,eAAe,GACnB,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,CAAC;gCAC9C,OAAO;gCACP,QAAQ;gCACR,YAAY;6BACb,CAAC,CAAC;4BAEL,IAAI,CAAC,eAAe;gCAAE,SAAS;4BAE/B,IAAI,CAAC;gCACH,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,IAAI,QAAQ,KAAK,WAAW,KAAK,QAAQ,oBAAoB,CAC9D,CAAC;gCAEF,MAAM,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gCAEjC,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,IAAI,QAAQ,KAAK,WAAW,KAAK,QAAQ,aAAa,CACvD,CAAC;4BACJ,CAAC;4BAAC,OAAO,KAAK,EAAE,CAAC;gCACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,IAAI,QAAQ,KAAK,WAAW,KAAK,QAAQ,UAAU,EACnD,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,KAAI,KAAK,CACtB,CAAC;4BACJ,CAAC;wBACH,CAAC;oBACH,CAAC,CAAA;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;KAAA;CACF,CAAA;AA1EY,4DAAwB;mCAAxB,wBAAwB;IADpC,IAAA,mBAAU,GAAE;qCAKsB,uCAAe;QACZ,qCAAkB;QACV,uDAA0B;GAN3D,wBAAwB,CA0EpC"}
@@ -18,14 +18,14 @@ let PHXTransactionContentService = PHXTransactionContentService_1 = class PHXTra
18
18
  const content = [student_id, module_code, month_id];
19
19
  if (detail_id)
20
20
  content.push(detail_id);
21
- return `Z${content.join(".")}W`;
21
+ return `Z${content.join(" ")}W`;
22
22
  }
23
23
  parseContent(transactionContent) {
24
24
  var _a, _b, _c;
25
25
  const contentReal = transactionContent.match(/Z(.*?)W/);
26
26
  let result = {};
27
27
  if (contentReal && contentReal[1]) {
28
- const splitContent = contentReal[1].split(".");
28
+ const splitContent = contentReal[1].split(" ");
29
29
  result = {
30
30
  student_id: Number((_a = splitContent[tuition_1.INDEX_TRANSACTION_CONTENT.STUDENT_ID]) !== null && _a !== void 0 ? _a : 0),
31
31
  module_code: splitContent[tuition_1.INDEX_TRANSACTION_CONTENT.MODULE_CODE],