public Task <IReadOnlyList <TValue> > DistinctAsync <TValue>(DistinctModel <TValue> model, TimeSpan?timeout, CancellationToken cancellationToken) { Ensure.IsNotNull(model, "model"); var operation = new DistinctOperation <TValue>( _collectionNamespace, model.ValueSerializer ?? _settings.SerializerRegistry.GetSerializer <TValue>(), model.FieldName, GetMessageEncoderSettings()) { Filter = ConvertToBsonDocument(model.Filter), MaxTime = model.MaxTime }; return(ExecuteReadOperation(operation, timeout, cancellationToken)); }
public Task <IReadOnlyList <TResult> > DistinctAsync <TResult>(DistinctModel <TResult> model, TimeSpan?timeout, CancellationToken cancellationToken) { Ensure.IsNotNull(model, "model"); var resultSerializer = model.ResultSerializer ?? _settings.SerializerRegistry.GetSerializer <TResult>(); var operation = new DistinctOperation <TResult>( _collectionNamespace, resultSerializer, model.FieldName, _messageEncoderSettings) { Criteria = ConvertToBsonDocument(model.Criteria), MaxTime = model.MaxTime }; return(ExecuteReadOperation(operation, timeout, cancellationToken)); }
public async Task DistinctAsync_should_execute_the_DistinctOperation() { var model = new DistinctModel <int>("a.b") { Filter = new BsonDocument("x", 1), MaxTime = TimeSpan.FromSeconds(20), }; await _subject.DistinctAsync(model, Timeout.InfiniteTimeSpan, CancellationToken.None); var call = _operationExecutor.GetReadCall <IReadOnlyList <int> >(); call.Operation.Should().BeOfType <DistinctOperation <int> >(); var operation = (DistinctOperation <int>)call.Operation; operation.CollectionNamespace.FullName.Should().Be("foo.bar"); operation.FieldName.Should().Be("a.b"); operation.Filter.Should().Be((BsonDocument)model.Filter); operation.MaxTime.Should().Be(model.MaxTime); }