@tc-libs/task 2.0.1

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.
Files changed (74) hide show
  1. package/README.md +11 -0
  2. package/package.json +27 -0
  3. package/src/constants/index.d.ts +1 -0
  4. package/src/constants/index.js +5 -0
  5. package/src/constants/index.js.map +1 -0
  6. package/src/constants/task-run.list.constant.d.ts +9 -0
  7. package/src/constants/task-run.list.constant.js +11 -0
  8. package/src/constants/task-run.list.constant.js.map +1 -0
  9. package/src/constants/task.enum.d.ts +6 -0
  10. package/src/constants/task.enum.js +11 -0
  11. package/src/constants/task.enum.js.map +1 -0
  12. package/src/constants/task.list.constant.d.ts +9 -0
  13. package/src/constants/task.list.constant.js +18 -0
  14. package/src/constants/task.list.constant.js.map +1 -0
  15. package/src/controllers/task-run.admin.controller.d.ts +10 -0
  16. package/src/controllers/task-run.admin.controller.js +67 -0
  17. package/src/controllers/task-run.admin.controller.js.map +1 -0
  18. package/src/controllers/task.admin.controller.d.ts +11 -0
  19. package/src/controllers/task.admin.controller.js +81 -0
  20. package/src/controllers/task.admin.controller.js.map +1 -0
  21. package/src/dtos/task-run.request.dto.d.ts +3 -0
  22. package/src/dtos/task-run.request.dto.js +23 -0
  23. package/src/dtos/task-run.request.dto.js.map +1 -0
  24. package/src/dtos/task.request.dto.d.ts +3 -0
  25. package/src/dtos/task.request.dto.js +23 -0
  26. package/src/dtos/task.request.dto.js.map +1 -0
  27. package/src/index.d.ts +4 -0
  28. package/src/index.js +8 -0
  29. package/src/index.js.map +1 -0
  30. package/src/repository/entities/task-run.entity.d.ts +24 -0
  31. package/src/repository/entities/task-run.entity.js +80 -0
  32. package/src/repository/entities/task-run.entity.js.map +1 -0
  33. package/src/repository/entities/task.entity.d.ts +22 -0
  34. package/src/repository/entities/task.entity.js +76 -0
  35. package/src/repository/entities/task.entity.js.map +1 -0
  36. package/src/repository/index.d.ts +5 -0
  37. package/src/repository/index.js +9 -0
  38. package/src/repository/index.js.map +1 -0
  39. package/src/repository/repositories/task-run.repository.d.ts +11 -0
  40. package/src/repository/repositories/task-run.repository.js +28 -0
  41. package/src/repository/repositories/task-run.repository.js.map +1 -0
  42. package/src/repository/repositories/task.repository.d.ts +11 -0
  43. package/src/repository/repositories/task.repository.js +28 -0
  44. package/src/repository/repositories/task.repository.js.map +1 -0
  45. package/src/repository/task.repository.module.d.ts +2 -0
  46. package/src/repository/task.repository.module.js +33 -0
  47. package/src/repository/task.repository.module.js.map +1 -0
  48. package/src/serializations/task-run.get.serialization.d.ts +3 -0
  49. package/src/serializations/task-run.get.serialization.js +8 -0
  50. package/src/serializations/task-run.get.serialization.js.map +1 -0
  51. package/src/serializations/task-run.list.serialization.d.ts +3 -0
  52. package/src/serializations/task-run.list.serialization.js +8 -0
  53. package/src/serializations/task-run.list.serialization.js.map +1 -0
  54. package/src/serializations/task.get.serialization.d.ts +3 -0
  55. package/src/serializations/task.get.serialization.js +8 -0
  56. package/src/serializations/task.get.serialization.js.map +1 -0
  57. package/src/serializations/task.list.serialization.d.ts +3 -0
  58. package/src/serializations/task.list.serialization.js +8 -0
  59. package/src/serializations/task.list.serialization.js.map +1 -0
  60. package/src/services/abstracts/task.abstract.service.d.ts +19 -0
  61. package/src/services/abstracts/task.abstract.service.js +86 -0
  62. package/src/services/abstracts/task.abstract.service.js.map +1 -0
  63. package/src/services/index.d.ts +3 -0
  64. package/src/services/index.js +7 -0
  65. package/src/services/index.js.map +1 -0
  66. package/src/services/task-run.service.d.ts +16 -0
  67. package/src/services/task-run.service.js +54 -0
  68. package/src/services/task-run.service.js.map +1 -0
  69. package/src/services/task.service.d.ts +21 -0
  70. package/src/services/task.service.js +92 -0
  71. package/src/services/task.service.js.map +1 -0
  72. package/src/task.module.d.ts +2 -0
  73. package/src/task.module.js +19 -0
  74. package/src/task.module.js.map +1 -0
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./task.repository.module"), exports);
5
+ tslib_1.__exportStar(require("./entities/task.entity"), exports);
6
+ tslib_1.__exportStar(require("./entities/task-run.entity"), exports);
7
+ tslib_1.__exportStar(require("./repositories/task.repository"), exports);
8
+ tslib_1.__exportStar(require("./repositories/task-run.repository"), exports);
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/task/src/repository/index.ts"],"names":[],"mappings":";;;AAAA,mEAAyC;AACzC,iEAAuC;AACvC,qEAA2C;AAC3C,yEAA+C;AAC/C,6EAAmD"}
@@ -0,0 +1,11 @@
1
+ import { DatabaseMongoRepositoryAbstract } from '@tc-libs/database';
2
+ import { Logger } from '@nestjs/common';
3
+ import { Connection, Model } from 'mongoose';
4
+ import { AppCacheService } from '@tc-libs/app-cache';
5
+ import { TaskRunDoc, TaskRunEntity } from '../entities/task-run.entity';
6
+ export declare class TaskRunRepository extends DatabaseMongoRepositoryAbstract<TaskRunEntity, TaskRunDoc> {
7
+ protected readonly taskRunModel: Model<TaskRunEntity>;
8
+ protected readonly connection: Connection;
9
+ protected readonly _logger: Logger;
10
+ constructor(taskRunModel: Model<TaskRunEntity>, connection: Connection, _cache: AppCacheService);
11
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaskRunRepository = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const database_1 = require("@tc-libs/database");
6
+ const common_1 = require("@nestjs/common");
7
+ const mongoose_1 = require("mongoose");
8
+ const app_cache_1 = require("@tc-libs/app-cache");
9
+ const task_run_entity_1 = require("../entities/task-run.entity");
10
+ const task_repository_1 = require("./task.repository");
11
+ let TaskRunRepository = class TaskRunRepository extends database_1.DatabaseMongoRepositoryAbstract {
12
+ constructor(taskRunModel, connection, _cache) {
13
+ super(taskRunModel, connection, _cache);
14
+ this.taskRunModel = taskRunModel;
15
+ this.connection = connection;
16
+ this._logger = new common_1.Logger(task_repository_1.TaskRepository.name);
17
+ }
18
+ };
19
+ exports.TaskRunRepository = TaskRunRepository;
20
+ exports.TaskRunRepository = TaskRunRepository = tslib_1.__decorate([
21
+ (0, common_1.Injectable)(),
22
+ tslib_1.__param(0, (0, database_1.DatabaseModel)(task_run_entity_1.TaskRunEntity.name)),
23
+ tslib_1.__param(1, (0, database_1.DatabaseConnection)()),
24
+ tslib_1.__metadata("design:paramtypes", [mongoose_1.Model,
25
+ mongoose_1.Connection,
26
+ app_cache_1.AppCacheService])
27
+ ], TaskRunRepository);
28
+ //# sourceMappingURL=task-run.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-run.repository.js","sourceRoot":"","sources":["../../../../../../packages/task/src/repository/repositories/task-run.repository.ts"],"names":[],"mappings":";;;;AAAA,gDAI2B;AAC3B,2CAAoD;AACpD,uCAA6C;AAC7C,kDAAqD;AACrD,iEAAwE;AACxE,uDAAmD;AAG5C,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,0CAGtC;IAEC,YAEE,YAAqD,EAErD,UAAyC,EACzC,MAAuB;QAEvB,KAAK,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QALrB,iBAAY,GAAZ,YAAY,CAAsB;QAElC,eAAU,GAAV,UAAU,CAAY;QALxB,YAAO,GAAW,IAAI,eAAM,CAAC,gCAAc,CAAC,IAAI,CAAC,CAAC;IASrE,CAAC;CACF,CAAA;AAdY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;IAOR,mBAAA,IAAA,wBAAa,EAAC,+BAAa,CAAC,IAAI,CAAC,CAAA;IAEjC,mBAAA,IAAA,6BAAkB,GAAE,CAAA;6CADY,gBAAK;QAEP,qBAAU;QACjC,2BAAe;GAVd,iBAAiB,CAc7B"}
@@ -0,0 +1,11 @@
1
+ import { DatabaseMongoRepositoryAbstract } from '@tc-libs/database';
2
+ import { Logger } from '@nestjs/common';
3
+ import { Connection, Model } from 'mongoose';
4
+ import { AppCacheService } from '@tc-libs/app-cache';
5
+ import { TaskDoc, TaskEntity } from '../entities/task.entity';
6
+ export declare class TaskRepository extends DatabaseMongoRepositoryAbstract<TaskEntity, TaskDoc> {
7
+ protected readonly taskModel: Model<TaskEntity>;
8
+ protected readonly connection: Connection;
9
+ protected readonly _logger: Logger;
10
+ constructor(taskModel: Model<TaskEntity>, connection: Connection, _cache: AppCacheService);
11
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var TaskRepository_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.TaskRepository = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const database_1 = require("@tc-libs/database");
7
+ const common_1 = require("@nestjs/common");
8
+ const mongoose_1 = require("mongoose");
9
+ const app_cache_1 = require("@tc-libs/app-cache");
10
+ const task_entity_1 = require("../entities/task.entity");
11
+ let TaskRepository = TaskRepository_1 = class TaskRepository extends database_1.DatabaseMongoRepositoryAbstract {
12
+ constructor(taskModel, connection, _cache) {
13
+ super(taskModel, connection, _cache);
14
+ this.taskModel = taskModel;
15
+ this.connection = connection;
16
+ this._logger = new common_1.Logger(TaskRepository_1.name);
17
+ }
18
+ };
19
+ exports.TaskRepository = TaskRepository;
20
+ exports.TaskRepository = TaskRepository = TaskRepository_1 = tslib_1.__decorate([
21
+ (0, common_1.Injectable)(),
22
+ tslib_1.__param(0, (0, database_1.DatabaseModel)(task_entity_1.TaskEntity.name)),
23
+ tslib_1.__param(1, (0, database_1.DatabaseConnection)()),
24
+ tslib_1.__metadata("design:paramtypes", [mongoose_1.Model,
25
+ mongoose_1.Connection,
26
+ app_cache_1.AppCacheService])
27
+ ], TaskRepository);
28
+ //# sourceMappingURL=task.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.repository.js","sourceRoot":"","sources":["../../../../../../packages/task/src/repository/repositories/task.repository.ts"],"names":[],"mappings":";;;;;AAAA,gDAI2B;AAC3B,2CAAoD;AACpD,uCAA6C;AAC7C,kDAAqD;AACrD,yDAA8D;AAGvD,IAAM,cAAc,sBAApB,MAAM,cAAe,SAAQ,0CAGnC;IAEC,YAEE,SAA+C,EAE/C,UAAyC,EACzC,MAAuB;QAEvB,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QALlB,cAAS,GAAT,SAAS,CAAmB;QAE5B,eAAU,GAAV,UAAU,CAAY;QALxB,YAAO,GAAW,IAAI,eAAM,CAAC,gBAAc,CAAC,IAAI,CAAC,CAAC;IASrE,CAAC;CACF,CAAA;AAdY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;IAOR,mBAAA,IAAA,wBAAa,EAAC,wBAAU,CAAC,IAAI,CAAC,CAAA;IAE9B,mBAAA,IAAA,6BAAkB,GAAE,CAAA;6CADS,gBAAK;QAEJ,qBAAU;QACjC,2BAAe;GAVd,cAAc,CAc1B"}
@@ -0,0 +1,2 @@
1
+ export declare class TaskRepositoryModule {
2
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaskRepositoryModule = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const mongoose_1 = require("@nestjs/mongoose");
7
+ const task_repository_1 = require("./repositories/task.repository");
8
+ const task_run_repository_1 = require("./repositories/task-run.repository");
9
+ const task_entity_1 = require("./entities/task.entity");
10
+ const task_run_entity_1 = require("./entities/task-run.entity");
11
+ let TaskRepositoryModule = class TaskRepositoryModule {
12
+ };
13
+ exports.TaskRepositoryModule = TaskRepositoryModule;
14
+ exports.TaskRepositoryModule = TaskRepositoryModule = tslib_1.__decorate([
15
+ (0, common_1.Module)({
16
+ providers: [task_repository_1.TaskRepository, task_run_repository_1.TaskRunRepository],
17
+ exports: [task_repository_1.TaskRepository, task_run_repository_1.TaskRunRepository],
18
+ controllers: [],
19
+ imports: [
20
+ mongoose_1.MongooseModule.forFeature([
21
+ {
22
+ name: task_entity_1.TaskEntity.name,
23
+ schema: task_entity_1.TaskSchema,
24
+ },
25
+ {
26
+ name: task_run_entity_1.TaskRunEntity.name,
27
+ schema: task_run_entity_1.TaskRunSchema,
28
+ },
29
+ ]),
30
+ ],
31
+ })
32
+ ], TaskRepositoryModule);
33
+ //# sourceMappingURL=task.repository.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.repository.module.js","sourceRoot":"","sources":["../../../../../packages/task/src/repository/task.repository.module.ts"],"names":[],"mappings":";;;;AAAA,2CAAwC;AACxC,+CAAkD;AAClD,oEAAgE;AAChE,4EAAuE;AACvE,wDAAgE;AAChE,gEAA0E;AAmBnE,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;CAAG,CAAA;AAAvB,oDAAoB;+BAApB,oBAAoB;IAjBhC,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,gCAAc,EAAE,uCAAiB,CAAC;QAC9C,OAAO,EAAE,CAAC,gCAAc,EAAE,uCAAiB,CAAC;QAC5C,WAAW,EAAE,EAAE;QACf,OAAO,EAAE;YACP,yBAAc,CAAC,UAAU,CAAC;gBACxB;oBACE,IAAI,EAAE,wBAAU,CAAC,IAAI;oBACrB,MAAM,EAAE,wBAAU;iBACnB;gBACD;oBACE,IAAI,EAAE,+BAAa,CAAC,IAAI;oBACxB,MAAM,EAAE,+BAAa;iBACtB;aACF,CAAC;SACH;KACF,CAAC;GACW,oBAAoB,CAAG"}
@@ -0,0 +1,3 @@
1
+ import { ResponseIdSerialization } from '@tc-libs/response';
2
+ export declare class TaskRunGetSerialization extends ResponseIdSerialization {
3
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaskRunGetSerialization = void 0;
4
+ const response_1 = require("@tc-libs/response");
5
+ class TaskRunGetSerialization extends response_1.ResponseIdSerialization {
6
+ }
7
+ exports.TaskRunGetSerialization = TaskRunGetSerialization;
8
+ //# sourceMappingURL=task-run.get.serialization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-run.get.serialization.js","sourceRoot":"","sources":["../../../../../packages/task/src/serializations/task-run.get.serialization.ts"],"names":[],"mappings":";;;AAAA,gDAA4D;AAE5D,MAAa,uBAAwB,SAAQ,kCAAuB;CAAG;AAAvE,0DAAuE"}
@@ -0,0 +1,3 @@
1
+ import { TaskRunGetSerialization } from './task-run.get.serialization';
2
+ export declare class TaskRunListSerialization extends TaskRunGetSerialization {
3
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaskRunListSerialization = void 0;
4
+ const task_run_get_serialization_1 = require("./task-run.get.serialization");
5
+ class TaskRunListSerialization extends task_run_get_serialization_1.TaskRunGetSerialization {
6
+ }
7
+ exports.TaskRunListSerialization = TaskRunListSerialization;
8
+ //# sourceMappingURL=task-run.list.serialization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-run.list.serialization.js","sourceRoot":"","sources":["../../../../../packages/task/src/serializations/task-run.list.serialization.ts"],"names":[],"mappings":";;;AAAA,6EAAuE;AAEvE,MAAa,wBAAyB,SAAQ,oDAAuB;CAAG;AAAxE,4DAAwE"}
@@ -0,0 +1,3 @@
1
+ import { ResponseIdSerialization } from '@tc-libs/response';
2
+ export declare class TaskGetSerialization extends ResponseIdSerialization {
3
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaskGetSerialization = void 0;
4
+ const response_1 = require("@tc-libs/response");
5
+ class TaskGetSerialization extends response_1.ResponseIdSerialization {
6
+ }
7
+ exports.TaskGetSerialization = TaskGetSerialization;
8
+ //# sourceMappingURL=task.get.serialization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.get.serialization.js","sourceRoot":"","sources":["../../../../../packages/task/src/serializations/task.get.serialization.ts"],"names":[],"mappings":";;;AAAA,gDAA4D;AAE5D,MAAa,oBAAqB,SAAQ,kCAAuB;CAAG;AAApE,oDAAoE"}
@@ -0,0 +1,3 @@
1
+ import { TaskGetSerialization } from './task.get.serialization';
2
+ export declare class TaskListSerialization extends TaskGetSerialization {
3
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaskListSerialization = void 0;
4
+ const task_get_serialization_1 = require("./task.get.serialization");
5
+ class TaskListSerialization extends task_get_serialization_1.TaskGetSerialization {
6
+ }
7
+ exports.TaskListSerialization = TaskListSerialization;
8
+ //# sourceMappingURL=task.list.serialization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.list.serialization.js","sourceRoot":"","sources":["../../../../../packages/task/src/serializations/task.list.serialization.ts"],"names":[],"mappings":";;;AAAA,qEAAgE;AAEhE,MAAa,qBAAsB,SAAQ,6CAAoB;CAAG;AAAlE,sDAAkE"}
@@ -0,0 +1,19 @@
1
+ import { RetryPolicyMongoService } from '@tc-libs/retry-policy';
2
+ import { ITcLogService, LogFactory } from '@tc-libs/logger';
3
+ import { ClientSession } from 'mongoose';
4
+ import { TaskRunService } from '../task-run.service';
5
+ import { TaskService } from '../task.service';
6
+ export declare abstract class AbstractCronTask {
7
+ private readonly taskService;
8
+ private readonly taskRunService;
9
+ private readonly mongoRetryPolicy?;
10
+ private isRunning;
11
+ abstract code: string;
12
+ abstract staleMs: number;
13
+ protected readonly logger: ITcLogService;
14
+ protected constructor(loggerFactory: LogFactory, contextName: string, taskService: TaskService, taskRunService: TaskRunService, mongoRetryPolicy?: RetryPolicyMongoService | undefined);
15
+ protected _sleep(ms: number): Promise<unknown>;
16
+ protected run(envName: string): Promise<void>;
17
+ protected abstract work(session?: ClientSession): Promise<void>;
18
+ protected createSession?(): Promise<ClientSession>;
19
+ }
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AbstractCronTask = void 0;
4
+ class AbstractCronTask {
5
+ constructor(loggerFactory, contextName, taskService, taskRunService, mongoRetryPolicy) {
6
+ this.taskService = taskService;
7
+ this.taskRunService = taskRunService;
8
+ this.mongoRetryPolicy = mongoRetryPolicy;
9
+ this.isRunning = false;
10
+ this.logger = loggerFactory.createLogger(contextName);
11
+ }
12
+ _sleep(ms) {
13
+ return new Promise((resolve) => setTimeout(resolve, ms));
14
+ }
15
+ async run(envName) {
16
+ // lock intra-process
17
+ if (this.isRunning)
18
+ return;
19
+ this.isRunning = true;
20
+ const startedAt = Date.now();
21
+ let session;
22
+ let runId;
23
+ try {
24
+ // 1) ensure + lock cross-instance (DB)
25
+ await this.taskService.ensureTask(this.code, envName);
26
+ const task = await this.taskService.tryAcquireLock(this.code, envName, this.staleMs);
27
+ // Se non prendi il lock: task disattivo oppure già in esecuzione altrove
28
+ if (!task) {
29
+ this.logger.debug?.(`Task ${this.code} is already running elsewhere or inactive.`);
30
+ return;
31
+ }
32
+ // 2) crea TaskRun
33
+ const run = await this.taskRunService.startRun(task);
34
+ runId = run._id.toString();
35
+ // 3) esegui work (con o senza transazione)
36
+ session = await this.createSession?.();
37
+ if (session) {
38
+ if (!this.mongoRetryPolicy) {
39
+ throw new Error(`${this.constructor.name}: createSession() presente ma mongoRetryPolicy non iniettata`);
40
+ }
41
+ await this.mongoRetryPolicy.runInTransactionWithRetry(session, async (s) => {
42
+ await this.work(s);
43
+ });
44
+ }
45
+ else {
46
+ await this.work(undefined);
47
+ }
48
+ // 4) success: aggiorna run + task
49
+ const elapsedMs = Date.now() - startedAt;
50
+ if (runId)
51
+ await this.taskRunService.endRun(runId, elapsedMs);
52
+ await this.taskService.markSuccess(this.code, elapsedMs, envName);
53
+ }
54
+ catch (err) {
55
+ this.logger.notifyError(err);
56
+ const elapsedMs = Date.now() - startedAt;
57
+ if (runId) {
58
+ try {
59
+ await this.taskRunService.failRun(runId, err, elapsedMs);
60
+ }
61
+ catch (e) {
62
+ this.logger.notifyError(e);
63
+ }
64
+ }
65
+ try {
66
+ await this.taskService.markError(this.code, err, elapsedMs, envName);
67
+ }
68
+ catch (e) {
69
+ this.logger.notifyError(e);
70
+ }
71
+ }
72
+ finally {
73
+ this.isRunning = false;
74
+ if (session) {
75
+ try {
76
+ await session.endSession();
77
+ }
78
+ catch (e) {
79
+ this.logger.notifyError(e);
80
+ }
81
+ }
82
+ }
83
+ }
84
+ }
85
+ exports.AbstractCronTask = AbstractCronTask;
86
+ //# sourceMappingURL=task.abstract.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.abstract.service.js","sourceRoot":"","sources":["../../../../../../packages/task/src/services/abstracts/task.abstract.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './task-run.service';
2
+ export * from './task.service';
3
+ export * from './abstracts/task.abstract.service';
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./task-run.service"), exports);
5
+ tslib_1.__exportStar(require("./task.service"), exports);
6
+ tslib_1.__exportStar(require("./abstracts/task.abstract.service"), exports);
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/task/src/services/index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC;AACnC,yDAA+B;AAC/B,4EAAkD"}
@@ -0,0 +1,16 @@
1
+ import { Logger } from '@nestjs/common';
2
+ import { NumberService } from '@tc-libs/helper';
3
+ import { PaginationService } from '@tc-libs/pagination';
4
+ import { AbstractService } from '@tc-libs/service';
5
+ import { TaskRunRepository } from '../repository/repositories/task-run.repository';
6
+ import { TaskRunEntity, TaskRunDoc, TaskDoc } from '../repository';
7
+ export declare class TaskRunService extends AbstractService<TaskRunEntity, TaskRunDoc> {
8
+ private readonly taskRunRepository;
9
+ protected readonly _paging: PaginationService;
10
+ protected readonly _number: NumberService;
11
+ readonly logger: Logger;
12
+ constructor(taskRunRepository: TaskRunRepository, _paging: PaginationService, _number: NumberService);
13
+ startRun(task: TaskDoc): Promise<TaskRunDoc>;
14
+ endRun(runId: string, elapsedMs: number): Promise<void>;
15
+ failRun(runId: string, error: unknown, elapsedMs: number): Promise<void>;
16
+ }
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var TaskRunService_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.TaskRunService = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const common_1 = require("@nestjs/common");
7
+ const helper_1 = require("@tc-libs/helper");
8
+ const pagination_1 = require("@tc-libs/pagination");
9
+ const service_1 = require("@tc-libs/service");
10
+ const task_run_repository_1 = require("../repository/repositories/task-run.repository");
11
+ let TaskRunService = TaskRunService_1 = class TaskRunService extends service_1.AbstractService {
12
+ constructor(taskRunRepository, _paging, _number) {
13
+ super(taskRunRepository, _paging);
14
+ this.taskRunRepository = taskRunRepository;
15
+ this._paging = _paging;
16
+ this._number = _number;
17
+ this.logger = new common_1.Logger(TaskRunService_1.name);
18
+ }
19
+ async startRun(task) {
20
+ const now = new Date();
21
+ return this.taskRunRepository.create({
22
+ task: {
23
+ id: task._id.toString(),
24
+ code: task.code,
25
+ env: task.env,
26
+ },
27
+ start: now,
28
+ });
29
+ }
30
+ async endRun(runId, elapsedMs) {
31
+ const now = new Date();
32
+ await this.taskRunRepository
33
+ .model()
34
+ .updateOne({ _id: runId }, { $set: { end: now, elapsedMs } });
35
+ }
36
+ async failRun(runId, error, elapsedMs) {
37
+ const now = new Date();
38
+ const errStr = error instanceof Error
39
+ ? `${error.name}: ${error.message}\n${error.stack ?? ''}`
40
+ : String(error);
41
+ const truncated = errStr.length > 8000 ? errStr.slice(0, 8000) + '…' : errStr;
42
+ await this.taskRunRepository
43
+ .model()
44
+ .updateOne({ _id: runId }, { $set: { end: now, elapsedMs, error: truncated } });
45
+ }
46
+ };
47
+ exports.TaskRunService = TaskRunService;
48
+ exports.TaskRunService = TaskRunService = TaskRunService_1 = tslib_1.__decorate([
49
+ (0, common_1.Injectable)(),
50
+ tslib_1.__metadata("design:paramtypes", [task_run_repository_1.TaskRunRepository,
51
+ pagination_1.PaginationService,
52
+ helper_1.NumberService])
53
+ ], TaskRunService);
54
+ //# sourceMappingURL=task-run.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-run.service.js","sourceRoot":"","sources":["../../../../../packages/task/src/services/task-run.service.ts"],"names":[],"mappings":";;;;;AAAA,2CAAoD;AACpD,4CAAgD;AAChD,oDAAwD;AACxD,8CAAmD;AACnD,wFAAmF;AAI5E,IAAM,cAAc,sBAApB,MAAM,cAAe,SAAQ,yBAA0C;IAG5E,YACmB,iBAAoC,EAClC,OAA0B,EAC1B,OAAsB;QAEzC,KAAK,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;QAJjB,sBAAiB,GAAjB,iBAAiB,CAAmB;QAClC,YAAO,GAAP,OAAO,CAAmB;QAC1B,YAAO,GAAP,OAAO,CAAe;QALlC,WAAM,GAAW,IAAI,eAAM,CAAC,gBAAc,CAAC,IAAI,CAAC,CAAC;IAQ1D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAa;QAC1B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAa;YAC/C,IAAI,EAAE;gBACJ,EAAE,EAAE,IAAI,CAAC,GAAI,CAAC,QAAQ,EAAE;gBACxB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,GAAG,EAAE,IAAI,CAAC,GAAG;aACd;YACD,KAAK,EAAE,GAAG;SACX,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,SAAiB;QAC3C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,CAAC,iBAAiB;aACzB,KAAK,EAAE;aACP,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,OAAO,CACX,KAAa,EACb,KAAc,EACd,SAAiB;QAEjB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,MAAM,GACV,KAAK,YAAY,KAAK;YACpB,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE;YACzD,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEpB,MAAM,SAAS,GACb,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;QAE9D,MAAM,IAAI,CAAC,iBAAiB;aACzB,KAAK,EAAE;aACP,SAAS,CACR,EAAE,GAAG,EAAE,KAAK,EAAE,EACd,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CACpD,CAAC;IACN,CAAC;CACF,CAAA;AAnDY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;6CAK2B,uCAAiB;QACzB,8BAAiB;QACjB,sBAAa;GANhC,cAAc,CAmD1B"}
@@ -0,0 +1,21 @@
1
+ import { Logger } from '@nestjs/common';
2
+ import { NumberService } from '@tc-libs/helper';
3
+ import { PaginationService } from '@tc-libs/pagination';
4
+ import { AbstractService } from '@tc-libs/service';
5
+ import { TaskDoc, TaskEntity, TaskRepository } from '../repository';
6
+ export declare class TaskService extends AbstractService<TaskEntity, TaskDoc> {
7
+ private readonly _task;
8
+ protected readonly _paging: PaginationService;
9
+ protected readonly _number: NumberService;
10
+ readonly logger: Logger;
11
+ constructor(_task: TaskRepository, _paging: PaginationService, _number: NumberService);
12
+ ensureTask(code: string, env: string): Promise<TaskDoc>;
13
+ /**
14
+ * Lock atomico: prende il task solo se:
15
+ * - esiste ed è active
16
+ * - è IDLE, oppure RUNNING ma "stale" da oltre staleMs (takeover)
17
+ */
18
+ tryAcquireLock(code: string, env: string, staleMs: number): Promise<TaskDoc | null>;
19
+ markSuccess(code: string, elapsedMs: number, env: string): Promise<void>;
20
+ markError(code: string, error: unknown, elapsedMs: number, env: string): Promise<void>;
21
+ }
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ var TaskService_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.TaskService = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const common_1 = require("@nestjs/common");
7
+ const helper_1 = require("@tc-libs/helper");
8
+ const pagination_1 = require("@tc-libs/pagination");
9
+ const service_1 = require("@tc-libs/service");
10
+ const constants_1 = require("../constants");
11
+ const repository_1 = require("../repository");
12
+ let TaskService = TaskService_1 = class TaskService extends service_1.AbstractService {
13
+ constructor(_task, _paging, _number) {
14
+ super(_task, _paging);
15
+ this._task = _task;
16
+ this._paging = _paging;
17
+ this._number = _number;
18
+ this.logger = new common_1.Logger(TaskService_1.name);
19
+ }
20
+ async ensureTask(code, env) {
21
+ // upsert: crea se non esiste
22
+ return await this._task.model().findOneAndUpdate({ code, env }, {
23
+ $setOnInsert: {
24
+ code,
25
+ env,
26
+ active: false,
27
+ status: constants_1.TASK_STATUS_ENUM.IDLE,
28
+ },
29
+ }, { upsert: true, new: true });
30
+ }
31
+ /**
32
+ * Lock atomico: prende il task solo se:
33
+ * - esiste ed è active
34
+ * - è IDLE, oppure RUNNING ma "stale" da oltre staleMs (takeover)
35
+ */
36
+ async tryAcquireLock(code, env, staleMs) {
37
+ const now = new Date();
38
+ const staleDate = new Date(now.getTime() - staleMs);
39
+ return await this._task.model().findOneAndUpdate({
40
+ code,
41
+ env,
42
+ active: true,
43
+ $or: [
44
+ { status: constants_1.TASK_STATUS_ENUM.IDLE },
45
+ // takeover in caso di crash
46
+ { status: constants_1.TASK_STATUS_ENUM.RUNNING, lastStart: { $lt: staleDate } },
47
+ ],
48
+ }, {
49
+ $set: {
50
+ status: constants_1.TASK_STATUS_ENUM.RUNNING,
51
+ lastStart: now,
52
+ lastError: undefined,
53
+ },
54
+ }, { new: true });
55
+ }
56
+ async markSuccess(code, elapsedMs, env) {
57
+ const now = new Date();
58
+ await this._task.model().updateOne({ code, env }, {
59
+ $set: {
60
+ status: constants_1.TASK_STATUS_ENUM.IDLE,
61
+ lastEnd: now,
62
+ lastElapsedMs: elapsedMs,
63
+ lastError: null,
64
+ },
65
+ });
66
+ }
67
+ async markError(code, error, elapsedMs, env) {
68
+ const now = new Date();
69
+ const errStr = error instanceof Error
70
+ ? `${error.name}: ${error.message}\n${error.stack ?? ''}`
71
+ : String(error);
72
+ // (opzionale) tronca per capped collection / limiti
73
+ const truncated = errStr.length > 8000 ? errStr.slice(0, 8000) + '…' : errStr;
74
+ await this._task.model().updateOne({ code, env }, {
75
+ $set: {
76
+ // scegli tu se vuoi IDLE oppure ERROR
77
+ status: constants_1.TASK_STATUS_ENUM.IDLE,
78
+ lastEnd: now,
79
+ lastElapsedMs: elapsedMs,
80
+ lastError: truncated,
81
+ },
82
+ });
83
+ }
84
+ };
85
+ exports.TaskService = TaskService;
86
+ exports.TaskService = TaskService = TaskService_1 = tslib_1.__decorate([
87
+ (0, common_1.Injectable)(),
88
+ tslib_1.__metadata("design:paramtypes", [repository_1.TaskRepository,
89
+ pagination_1.PaginationService,
90
+ helper_1.NumberService])
91
+ ], TaskService);
92
+ //# sourceMappingURL=task.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.service.js","sourceRoot":"","sources":["../../../../../packages/task/src/services/task.service.ts"],"names":[],"mappings":";;;;;AAAA,2CAAoD;AACpD,4CAAgD;AAChD,oDAAwD;AACxD,8CAAmD;AACnD,4CAAgD;AAChD,8CAAoE;AAG7D,IAAM,WAAW,mBAAjB,MAAM,WAAY,SAAQ,yBAAoC;IAGnE,YACmB,KAAqB,EACnB,OAA0B,EAC1B,OAAsB;QAEzC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAJL,UAAK,GAAL,KAAK,CAAgB;QACnB,YAAO,GAAP,OAAO,CAAmB;QAC1B,YAAO,GAAP,OAAO,CAAe;QALlC,WAAM,GAAW,IAAI,eAAM,CAAC,aAAW,CAAC,IAAI,CAAC,CAAC;IAQvD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,GAAW;QACxC,6BAA6B;QAC7B,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,gBAAgB,CAC9C,EAAE,IAAI,EAAE,GAAG,EAAE,EACb;YACE,YAAY,EAAE;gBACZ,IAAI;gBACJ,GAAG;gBACH,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,4BAAgB,CAAC,IAAI;aAC9B;SACF,EACD,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAC5B,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAClB,IAAY,EACZ,GAAW,EACX,OAAe;QAEf,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;QAEpD,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,gBAAgB,CAC9C;YACE,IAAI;YACJ,GAAG;YACH,MAAM,EAAE,IAAI;YACZ,GAAG,EAAE;gBACH,EAAE,MAAM,EAAE,4BAAgB,CAAC,IAAI,EAAE;gBACjC,4BAA4B;gBAC5B,EAAE,MAAM,EAAE,4BAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;aACpE;SACF,EACD;YACE,IAAI,EAAE;gBACJ,MAAM,EAAE,4BAAgB,CAAC,OAAO;gBAChC,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,SAAS;aACrB;SACF,EACD,EAAE,GAAG,EAAE,IAAI,EAAE,CACd,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CACf,IAAY,EACZ,SAAiB,EACjB,GAAW;QAEX,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,SAAS,CAChC,EAAE,IAAI,EAAE,GAAG,EAAE,EACb;YACE,IAAI,EAAE;gBACJ,MAAM,EAAE,4BAAgB,CAAC,IAAI;gBAC7B,OAAO,EAAE,GAAG;gBACZ,aAAa,EAAE,SAAS;gBACxB,SAAS,EAAE,IAAI;aAChB;SACF,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CACb,IAAY,EACZ,KAAc,EACd,SAAiB,EACjB,GAAW;QAEX,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,MAAM,GACV,KAAK,YAAY,KAAK;YACpB,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE;YACzD,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEpB,oDAAoD;QACpD,MAAM,SAAS,GACb,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;QAE9D,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,SAAS,CAChC,EAAE,IAAI,EAAE,GAAG,EAAE,EACb;YACE,IAAI,EAAE;gBACJ,sCAAsC;gBACtC,MAAM,EAAE,4BAAgB,CAAC,IAAI;gBAC7B,OAAO,EAAE,GAAG;gBACZ,aAAa,EAAE,SAAS;gBACxB,SAAS,EAAE,SAAS;aACrB;SACF,CACF,CAAC;IACJ,CAAC;CACF,CAAA;AA9GY,kCAAW;sBAAX,WAAW;IADvB,IAAA,mBAAU,GAAE;6CAKe,2BAAc;QACV,8BAAiB;QACjB,sBAAa;GANhC,WAAW,CA8GvB"}
@@ -0,0 +1,2 @@
1
+ export declare class TaskModule {
2
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaskModule = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const repository_1 = require("./repository");
7
+ const services_1 = require("./services");
8
+ let TaskModule = class TaskModule {
9
+ };
10
+ exports.TaskModule = TaskModule;
11
+ exports.TaskModule = TaskModule = tslib_1.__decorate([
12
+ (0, common_1.Global)(),
13
+ (0, common_1.Module)({
14
+ imports: [repository_1.TaskRepositoryModule],
15
+ exports: [services_1.TaskService, services_1.TaskRunService],
16
+ providers: [services_1.TaskService, services_1.TaskRunService],
17
+ })
18
+ ], TaskModule);
19
+ //# sourceMappingURL=task.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.module.js","sourceRoot":"","sources":["../../../../packages/task/src/task.module.ts"],"names":[],"mappings":";;;;AAAA,2CAAgD;AAChD,6CAAoD;AACpD,yCAAyD;AAQlD,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,gCAAU;qBAAV,UAAU;IANtB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,iCAAoB,CAAC;QAC/B,OAAO,EAAE,CAAC,sBAAW,EAAE,yBAAc,CAAC;QACtC,SAAS,EAAE,CAAC,sBAAW,EAAE,yBAAc,CAAC;KACzC,CAAC;GACW,UAAU,CAAG"}