Exemple #1
0
        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));
        }
Exemple #2
0
        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);
        }