/// <inheritdoc/> public IAsyncEnumerable <StreamEvent> FetchRange( StreamPositionRange range, CancellationToken cancellationToken) { try { return(_collection.Find( _filter.Gte(_sequenceNumberExpression, range.From.Value) & _filter.Lt(_sequenceNumberExpression, range.From.Value + range.Length)) .Project(_eventToStreamEvent) .ToAsyncEnumerable(cancellationToken)); } catch (MongoWaitQueueFullException ex) { throw new EventStoreUnavailable("Mongo wait queue is full", ex); } }
/// <inheritdoc/> public async Task <IEnumerable <Artifact> > FetchInRange( StreamPositionRange range, CancellationToken cancellationToken) { try { return(await _stream .Find(_filter.Gte(_sequenceNumberExpression, range.From.Value) & _filter.Lt(_sequenceNumberExpression, range.From.Value + range.Length)) .Project(_eventToArtifact) .ToListAsync(cancellationToken).ConfigureAwait(false)); } catch (MongoWaitQueueFullException ex) { throw new EventStoreUnavailable("Mongo wait queue is full", ex); } }
/// <inheritdoc/> public async Task <ISet <Artifact> > FetchInRangeAndPartition(PartitionId partitionId, StreamPositionRange range, CancellationToken cancellationToken) { ThrowIfNotConstructedWithPartitionIdExpression(); return(await FetchTypesWithFilter( _filter.EqStringOrGuid(_partitionIdExpression, partitionId.Value) & _filter.Gte(_sequenceNumberExpression, range.From.Value) & _filter.Lt(_sequenceNumberExpression, range.From.Value + range.Length), cancellationToken).ConfigureAwait(false)); }
/// <inheritdoc/> public Task <ISet <Artifact> > FetchInRange(StreamPositionRange range, CancellationToken cancellationToken) => FetchTypesWithFilter( _filter.Gte(_sequenceNumberExpression, range.From.Value) & _filter.Lt(_sequenceNumberExpression, range.From.Value + range.Length), cancellationToken);