コード例 #1
0
        public Task <IReadOnlyList <IEvent> > FetchStream(Guid streamId, long version = 0, DateTime?timestamp = null)
        {
            var selector  = _parent.Tenant.EventStorage();
            var statement = new EventStatement(selector)
            {
                StreamId = streamId, Version = version, Timestamp = timestamp, TenantId = _parent.Tenant.TenantId
            };

            IQueryHandler <IReadOnlyList <IEvent> > handler = new ListQueryHandler <IEvent>(statement, selector);

            return(AddItem(handler));
        }
コード例 #2
0
ファイル: EventFetcher.cs プロジェクト: ushenkodmitry/marten
        private void reset()
        {
            _session   = (QuerySession)_store.QuerySession();
            _storage   = _session.EventStorage();
            _statement = new EventStatement(_storage)
            {
                Filters = _filters
            };

            _handler = (IQueryHandler <IReadOnlyList <IEvent> >) new ListQueryHandler <IEvent>(_statement, _storage);

            _cancellation = new CancellationTokenSource(5.Seconds());
            _cancellation.Token.Register(teardown);
        }
コード例 #3
0
ファイル: EventFetcher.cs プロジェクト: tonykaralis/marten
        public EventFetcher(IDocumentStore store, ISqlFragment[] filters)
        {
            _store   = store;
            _filters = filters;

            using var session = (QuerySession)_store.QuerySession();
            _storage          = session.EventStorage();
            _statement        = new EventStatement(_storage)
            {
                Filters = _filters
            };

            _handler = new ListQueryHandler <IEvent>(_statement, _storage);
        }
コード例 #4
0
        private static EventOption ParseOption(EventStatement e)
        {
            if (e.Options == null || e.Options.Count == 0)
            {
                return new EventOption()
                       {
                           Required = true
                       }
            }
            ;

            var o = new EventOption();

            foreach (var option in e.Options.Where(n => n.Kind == SyntaxKind.OptionDeclaration))
            {
                switch (option.Value)
                {
                case Keyword._Required:
                    o.Required = true;
                    break;

                case Keyword._RequiredInOrder:
                    o.RequiredInOrder = true;
                    break;

                case Keyword._Optional:
                    o.Optional = true;
                    break;

                case Keyword._Unexpected:
                    o.Unexpected = true;
                    break;

                case Keyword._TimeToNext:
                    o.TimeToNext           = true;
                    o.TimeToNextParameters = option.Parameters;
                    break;

                case Keyword._TimeToNextKnownIdle:
                    o.TimeToNextKnownIdle           = true;
                    o.TimeToNextKnownIdleParameters = option.Parameters;
                    break;

                case Keyword._OneOrMore:
                    o.OneOrMore = true;
                    break;

                case Keyword._Frequency:
                    o.Frequency           = true;
                    o.FrequencyParameters = option.Parameters;
                    break;

                case Keyword._FrequencyPerFile:
                    o.FrequencyPerFile           = true;
                    o.FrequencyPerFileParameters = option.Parameters;
                    break;

                case Keyword._TimeTo:
                    o.TimeTo           = true;
                    o.TimeToParameters = option.Parameters;
                    break;

                case Keyword._TimeToOr:
                    o.TimeToOr           = true;
                    o.TimeToOrParameters = option.Parameters;
                    break;

                case Keyword._TimeFrom:
                    o.TimeFrom           = true;
                    o.TimeFromParameters = option.Parameters;
                    break;

                case Keyword._HideEvent:
                    o.HideEvent = true;
                    break;

                case Keyword._Hide:
                    o.Hide = true;
                    break;

                case Keyword._Value:
                    o.Value           = true;
                    o.ValueParameters = option.Parameters;
                    break;

                case Keyword._LastRepeat:
                    o.LastRepeat = true;
                    // OneOrMore is required when using LastRepeat as you are looking for OneOrMore Events that repeat - Sara
                    o.OneOrMore = true;
                    break;

                case Keyword._FirstRepeat:
                    o.FirstRepeat = true;
                    // OneOrMore is required when using FirstRepeat as you are looking for OneOrMore Events that repeat - Sara
                    o.OneOrMore = true;
                    break;

                case Keyword._Prior:
                    o.Prior = true;

                    o.PriorIndex   = -1;
                    o.PriorPattern = "-1";
                    foreach (var item in option.Parameters)
                    {
                        if (int.TryParse(item, out int index))
                        {
                            o.PriorIndex = index;
                        }
                        else
                        {
                            o.PriorPattern = item;
                        }
                    }
                    if (o.PriorIndex == -1)
                    {
                        o.PriorIndex = 1;
                    }
                    if (o.PriorPattern == "-1")
                    {
                        throw new OptionException($@"{PATTERN_SYNTAX_ERROR}
UnExpected '<>'  Expected 'Prior(<EventPattern>)' - You must specify the prior EventPattern", option.Span);
                    }
                    break;

                case Keyword._Name:
                    o.Name = true;
                    if (option.Parameters.Count == 0)
                    {
                        throw new OptionException($@"{PATTERN_SYNTAX_ERROR}
UnExpected Name  Expected 'Name (<Name>)'", option.Span);
                    }
                    if (option.Parameters.Count > 1)
                    {
                        throw new OptionException($@"{PATTERN_SYNTAX_ERROR}
UnExpected Name ({option.Parameters.ToCsv()})  Expected 'Name (""<Name>"")'", option.Span);
                    }
                    o.NameParameter = option.Parameters[0];
                    break;

                case Keyword._BodyStop:
                    o.BodyStop = true;
                    if (option.Parameters.Count == 0)
                    {
                        throw new OptionException($@"{PATTERN_SYNTAX_ERROR}
UnExpected BodyStop  Expected 'BodyStop (<EventPattern>)'", option.Span);
                    }
                    if (option.Parameters.Count > 1)
                    {
                        throw new OptionException($@"{PATTERN_SYNTAX_ERROR}
UnExpected BodyStop ({option.Parameters.ToCsv()})  Expected 'BodyStop (""<EventPattern>"")'", option.Span);
                    }
                    o.BodyStopParameter = option.Parameters[0];
                    break;
                }
            }

            return(o);
        }