public async Task Handle(EventRecord @event) { using var scope = _serviceScopeFactory.CreateScope(); var mediator = scope.ServiceProvider.GetRequiredService <IMediator>(); _logger.LogInformation("StreamHandler at position: {arg2}", @event.Position.CommitPosition); var message = await _eventStoreDbSerializer.Deserialize(@event); await mediator.Publish(message); }
public async Task <IReadOnlyCollection <T> > Get(string streamName, CancellationToken cancellationToken) { var stream = _eventStoreClient.ReadStreamAsync(Direction.Forwards, streamName, StreamPosition.Start, cancellationToken: cancellationToken); if (await stream.ReadState == ReadState.StreamNotFound) { return(null); } var resolvedEvents = await stream .ToListAsync(cancellationToken); var events = resolvedEvents .Select(async @event => await _eventStoreDbSerializer.Deserialize(@event.Event)); var deserializedEvents = await Task.WhenAll(events); return((IReadOnlyCollection <T>)deserializedEvents.ToList().AsReadOnly()); }