public async Task <PipelineResult> Execute(CommonPipelineDto dto)
        {
            var result   = new PipelineResult();
            var pipeline = _builder.BuildPipelineByDto(dto);

            foreach (var pipelineStepType in pipeline.Steps)
            {
                try
                {
                    var step = _builder.GetStepByType(pipelineStepType);

                    await step.Execute(pipeline.PayloadDto);
                }
                catch (Exception e)
                {
                    _logger.LogError(e.Message);
                    result.IsSuccess = false;
                }
                finally
                {
                    result.Result = pipeline.PayloadDto;
                }
            }

            return(result);
        }
Exemple #2
0
 public BasePipeline BuildPipelineByDto(CommonPipelineDto dto)
 {
     return(_pipelines.FirstOrDefault(p => p.PipelineDto.GetType() == dto.GetType()) ??
            throw new PipelineNotFoundException());
 }