ISagaQuery <TSaga> ISagaQueryFactory <TSaga, TMessage> .CreateQuery(ConsumeContext <TMessage> context) { Expression <Func <TSaga, bool> > expression = new SagaFilterExpressionConverter <TSaga, TMessage>(context.Message) .Convert(_filterExpression); return(new SagaQuery <TSaga>(expression)); }
public IEnumerable <Guid> Find(IConsumeContext <TMessage> context) { Expression <Func <TSaga, bool> > filter = new SagaFilterExpressionConverter <TSaga, TMessage>(context.Message).Convert(_filterExpression); var sagaFilter = new SagaFilter <TSaga>(filter); int count = 0; foreach (var sagaId in _repository.Where(sagaFilter, x => x.CorrelationId)) { yield return(sagaId); count++; } if (count == 0) { if (_policy.CanCreateInstance(context)) { yield return(_policy.GetNewSagaId(context)); } } }