UNPKG

@mbc-cqrs-serverless/task

Version:
70 lines 3.58 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; var TaskSfnEventHandler_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.TaskSfnEventHandler = void 0; const core_1 = require("@mbc-cqrs-serverless/core"); const common_1 = require("@nestjs/common"); const core_2 = require("@nestjs/core"); const enums_1 = require("../enums"); const task_module_definition_1 = require("../task.module-definition"); const task_service_1 = require("../task.service"); const task_sfn_event_1 = require("./task.sfn.event"); let TaskSfnEventHandler = TaskSfnEventHandler_1 = class TaskSfnEventHandler { constructor(moduleRef, taskService, eventFactory) { this.moduleRef = moduleRef; this.taskService = taskService; this.eventFactory = eventFactory; this.logger = new common_1.Logger(TaskSfnEventHandler_1.name); } onModuleInit() { const enableEventSourceModule = process.env.EVENT_SOURCE_DISABLED !== 'true'; if (enableEventSourceModule) { this.eventBus = this.moduleRef.get(core_1.EventBus, { strict: false }); } } async execute(event) { this.logger.debug('executing::', event); const taskKey = event.taskKey; this.logger.debug('sfn task key: ', taskKey); try { await this.taskService.updateSubTaskStatus(taskKey, enums_1.TaskStatusEnum.PROCESSING); const events = await this.eventFactory.transformStepFunctionTask(event); const result = await Promise.all(events.map((event) => this.eventBus.execute(event))); // update status completed await this.taskService.updateSubTaskStatus(taskKey, enums_1.TaskStatusEnum.COMPLETED, { result, }); } catch (error) { // update status failed this.logger.error(error); await Promise.all([ this.taskService.updateSubTaskStatus(taskKey, enums_1.TaskStatusEnum.FAILED, { error: error.stack, }), this.taskService.publishAlarm(event, error.stack), ]); // throw error // continue sfn regardless of whether they would succeed or fail } } }; exports.TaskSfnEventHandler = TaskSfnEventHandler; exports.TaskSfnEventHandler = TaskSfnEventHandler = TaskSfnEventHandler_1 = __decorate([ (0, core_1.EventHandler)(task_sfn_event_1.StepFunctionTaskEvent), __param(2, (0, common_1.Inject)(task_module_definition_1.TASK_QUEUE_EVENT_FACTORY)), __metadata("design:paramtypes", [core_2.ModuleRef, task_service_1.TaskService, Object]) ], TaskSfnEventHandler); //# sourceMappingURL=task.sfn.event.handler.js.map