Represents the filter criteria for a message store query.
Ejemplo n.º 1
0
    public IEnumerable <TBaseMessage> Query(MessageStoreQueryCriteria criteria)
    {
        var source    = this.messages.AsQueryable();
        var predicate = ToExpression(criteria, this.TypeNameConverter);

        if (predicate != null)
        {
            source = source.Where(predicate).Cast <StoredMessage>();
        }

        return(source.Select(x => x.Message));
    }
Ejemplo n.º 2
0
    public virtual IEnumerable <TBaseMessage> Query(MessageStoreQueryCriteria criteria)
    {
        var predicate = ToExpression(criteria, this.TypeNameConverter);
        var messages  = this.Messages.AsQueryable();

        if (predicate != null)
        {
            messages = messages.Where(predicate);
        }

        // NOTE: it's up to the serializer to actually hydrate the
        // right derived/concrete type from the underlying byte
        // array. So the <T> passed to Deserialize cannot be used
        // to determine that.
        return(messages
               .OrderBy(x => x.RowVersion)
               .AsEnumerable()
               .Select(x => this.serializer.Deserialize <TBaseMessage>(x.Payload)));
    }
Ejemplo n.º 3
0
        private Expression <Func <MessageEntity, bool> > AddEventFilter(Expression <Func <MessageEntity, bool> > result)
        {
            var criteria = default(Expression <Func <MessageEntity, bool> >);

            foreach (var filter in this.criteria.MessageTypes)
            {
                var sourceType = typeNameConverter.Invoke(filter);

                // ORs all aggregregate filters.
                criteria = Or(criteria, e => e.Type == sourceType);
            }

            if (criteria == null)
            {
                return(result);
            }

            // AND the criteria built so far.
            return(And(result, criteria));
        }
Ejemplo n.º 4
0
 public StoredMessageCriteriaBuilder(MessageStoreQueryCriteria criteria, Func <Type, string> typeNameConverter)
 {
     this.criteria          = criteria;
     this.typeNameConverter = typeNameConverter;
 }
Ejemplo n.º 5
0
 private static Expression <Func <MessageEntity, bool> > ToExpression(MessageStoreQueryCriteria criteria, Func <Type, string> typeNameConverter)
 {
     return(new StoredMessageCriteriaBuilder(criteria, typeNameConverter).Build());
 }