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)); }
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); }
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); }
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); }