import { Message, MessageAttributes } from '@node-ts/bus-messages' import { WorkflowData, WorkflowDataConstructor } from '../workflow-data' import { WorkflowHandlerProxy } from './workflow-handler-proxy' import { Logger } from '@node-ts/logger-core' import { WorkflowHandlerFn } from './workflow-handler-fn' import { MessageWorkflowMapping } from '../message-workflow-mapping' import { Persistence } from '../persistence' export class HandlesProxy extends WorkflowHandlerProxy { constructor ( handler: WorkflowHandlerFn, workflowDataConstructor: WorkflowDataConstructor, private messageMapping: MessageWorkflowMapping, persistence: Persistence, logger: Logger ) { super(handler, workflowDataConstructor, persistence, logger) } async getWorkflowData (message: TMessage, messageOptions: MessageAttributes): Promise { const searchValue = this.messageMapping.lookupMessage(message, messageOptions) if (!searchValue) { this.logger.trace('Message mapper returned undefined and will not resolve to any workflow data.', { message, workflowDataName: this.workflowDataConstructor.name }) return [] } return this.persistence.getWorkflowData( this.workflowDataConstructor, this.messageMapping, message, messageOptions ) } }