コード例 #1
1
        public void CreateView_should_execute_a_CreateViewOperation_with_the_expected_SerializerRegistry(
            [Values(false, true)]
            bool isSerializerRegistryNull,
            [Values(false, true)]
            bool async)
        {
            var mockPipeline = new Mock<PipelineDefinition<BsonDocument, BsonDocument>>();
            var documentSerializer = BsonSerializer.SerializerRegistry.GetSerializer<BsonDocument>();
            var mockSerializerRegistry = new Mock<IBsonSerializerRegistry>();
            mockSerializerRegistry.Setup(r => r.GetSerializer(typeof(BsonDocument))).Returns(BsonDocumentSerializer.Instance);
            mockSerializerRegistry.Setup(r => r.GetSerializer<BsonDocument>()).Returns(BsonDocumentSerializer.Instance);
            var serializerRegistry = isSerializerRegistryNull ? null : mockSerializerRegistry.Object;
            var stages = new[] { new BsonDocument("$match", new BsonDocument("x", 1)) };
            var renderedPipeline = new RenderedPipelineDefinition<BsonDocument>(stages, BsonDocumentSerializer.Instance);
            mockPipeline.Setup(p => p.Render(documentSerializer, serializerRegistry ?? BsonSerializer.SerializerRegistry)).Returns(renderedPipeline);

            var options = new CreateViewOptions<BsonDocument>
            {
                SerializerRegistry = serializerRegistry
            };

            if (async)
            {
                _subject.CreateViewAsync<BsonDocument, BsonDocument>("viewName", "viewOn", mockPipeline.Object, options, CancellationToken.None).GetAwaiter().GetResult();
            }
            else
            {
                _subject.CreateView<BsonDocument, BsonDocument>("viewName", "viewOn", mockPipeline.Object, options, CancellationToken.None);
            }

            var call = _operationExecutor.GetWriteCall<BsonDocument>();
            var operation = call.Operation.Should().BeOfType<CreateViewOperation>().Subject;
            operation.Pipeline.Should().Equal(stages); // test output of call to Render
        }
コード例 #2
0
        public void constructor_should_initialize_instance()
        {
            var subject = new CreateViewOptions<BsonDocument>();

            subject.Collation.Should().BeNull();
            subject.DocumentSerializer.Should().BeNull();
            subject.SerializerRegistry.Should().BeNull();
        }
コード例 #3
0
        public void Collation_get_and_set_should_work(
            [Values(null, "en_US", "fr_CA")]
            string locale)
        {
            var subject = new CreateViewOptions<BsonDocument>();
            var value = locale == null ? null : new Collation(locale);

            subject.Collation = value;
            var result = subject.Collation;

            result.Should().BeSameAs(value);
        }
コード例 #4
0
        public void SerializerRegistry_get_and_set_should_work(
            [Values(false, true)]
            bool isValueNull)
        {
            var subject = new CreateViewOptions<BsonDocument>();
            var value = isValueNull ? null : new BsonSerializerRegistry();

            subject.SerializerRegistry = value;
            var result = subject.SerializerRegistry;

            result.Should().BeSameAs(value);
        }
コード例 #5
0
        public void DocumentSerializer_get_and_set_should_work(
            [Values(false, true)]
            bool isValueNull)
        {
            var subject = new CreateViewOptions<BsonDocument>();
            var documentSerializer = isValueNull ? null : new BsonDocumentSerializer();

            subject.DocumentSerializer = documentSerializer;
            var result = subject.DocumentSerializer;

            result.Should().BeSameAs(documentSerializer);
        }
コード例 #6
0
 public virtual void CreateView <TDocument, TResult>(string viewName, string viewOn, PipelineDefinition <TDocument, TResult> pipeline, CreateViewOptions <TDocument> options = null, CancellationToken cancellationToken = new CancellationToken()) => throw new NotImplementedException();
コード例 #7
0
 public void CreateView <TDocument, TResult>(IClientSessionHandle session, string viewName, string viewOn, PipelineDefinition <TDocument, TResult> pipeline, CreateViewOptions <TDocument> options = null, CancellationToken cancellationToken = default(CancellationToken)) => _database.CreateView(session, viewName, viewOn, pipeline, options, cancellationToken);
コード例 #8
0
 /// <inheritdoc/>
 public Task CreateViewAsync <TDocument, TResult>(IClientSessionHandle session, string viewName, string viewOn, PipelineDefinition <TDocument, TResult> pipeline, CreateViewOptions <TDocument> options = null, CancellationToken cancellationToken = default(CancellationToken))
 {
     throw new System.NotImplementedException();
 }
コード例 #9
0
 /// <inheritdoc/>
 public void CreateView <TDocument, TResult>(string viewName, string viewOn, PipelineDefinition <TDocument, TResult> pipeline, CreateViewOptions <TDocument> options = null, CancellationToken cancellationToken = default(CancellationToken))
 {
     throw new System.NotImplementedException();
 }
コード例 #10
0
 /// <inheritdoc/>
 public Task CreateViewAsync <TDocument, TResult>(IClientSessionHandle session, string viewName, string viewOn, PipelineDefinition <TDocument, TResult> pipeline, CreateViewOptions <TDocument> options = null, CancellationToken cancellationToken = default)
 {
     return(_configuration.Database.CreateViewAsync <TDocument, TResult>(session, viewName, viewOn, pipeline, options, cancellationToken));
 }
コード例 #11
0
 /// <inheritdoc/>
 public void CreateView <TDocument, TResult>(string viewName, string viewOn, PipelineDefinition <TDocument, TResult> pipeline, CreateViewOptions <TDocument> options = null, CancellationToken cancellationToken = default)
 {
     _configuration.Database.CreateView <TDocument, TResult>(viewName, viewOn, pipeline, options, cancellationToken);
 }
コード例 #12
0
        public IUnifiedEntityTestOperation Build(string targetDatabaseId, BsonDocument arguments)
        {
            var database = _entityMap.GetDatabase(targetDatabaseId);

            string name   = null;
            string viewOn = null;
            PipelineDefinition <BsonDocument, BsonDocument> pipeline = null;
            IClientSessionHandle session           = null;
            TimeSpan?            expireAfter       = null;
            TimeSeriesOptions    timeSeriesOptions = null;
            ClusteredIndexOptions <BsonDocument> clusteredIndex = null;

            foreach (var argument in arguments)
            {
                switch (argument.Name)
                {
                case "clusteredIndex":
                    var clusteredIndexSpecification = argument.Value.AsBsonDocument;
                    clusteredIndex = new ClusteredIndexOptions <BsonDocument>
                    {
                        Key    = clusteredIndexSpecification["key"].AsBsonDocument,
                        Unique = clusteredIndexSpecification["unique"].AsBoolean,
                        Name   = clusteredIndexSpecification["name"].AsString
                    };
                    break;

                case "collection":
                    name = argument.Value.AsString;
                    break;

                case "expireAfterSeconds":
                    expireAfter = TimeSpan.FromSeconds(argument.Value.ToInt64());
                    break;

                case "pipeline":
                    pipeline = new EmptyPipelineDefinition <BsonDocument>();
                    foreach (var stage in argument.Value.AsBsonArray)
                    {
                        pipeline = pipeline.AppendStage <BsonDocument, BsonDocument, BsonDocument>(stage.AsBsonDocument);
                    }
                    break;

                case "session":
                    var sessionId = argument.Value.AsString;
                    session = _entityMap.GetSession(sessionId);
                    break;

                case "timeseries":
                    var timeseries = argument.Value.AsBsonDocument;
                    var timeField  = timeseries["timeField"].AsString;
                    var metaField  = timeseries.TryGetValue("metaField", out var metaFieldValue) ? metaFieldValue.AsString : null;
                    TimeSeriesGranularity?granularity = null;
                    if (timeseries.TryGetValue("granularity", out var granularityValue))
                    {
                        granularity = (TimeSeriesGranularity)Enum.Parse(typeof(TimeSeriesGranularity), granularityValue.AsString, true);
                    }
                    timeSeriesOptions = new TimeSeriesOptions(timeField, metaField, granularity);
                    break;

                case "viewOn":
                    viewOn = argument.Value.AsString;
                    break;

                default:
                    throw new FormatException($"Invalid CreateCollectionOperation argument name: '{argument.Name}'.");
                }
            }

            if (viewOn == null && pipeline == null)
            {
                var options = new CreateCollectionOptions <BsonDocument> {
                    ExpireAfter = expireAfter, TimeSeriesOptions = timeSeriesOptions, ClusteredIndex = clusteredIndex
                };
                return(new UnifiedCreateCollectionOperation(session, database, name, options));
            }
            if (viewOn != null && expireAfter == null && timeSeriesOptions == null && clusteredIndex == null)
            {
                var options = new CreateViewOptions <BsonDocument>();
                return(new UnifiedCreateViewOperation(session, database, name, viewOn, pipeline, options));
            }

            var invalidArguments = string.Join(",", arguments.Elements.Select(x => x.Name));

            throw new InvalidOperationException($"Invalid combination of CreateCollectionOperation arguments: {invalidArguments}");
        }
コード例 #13
0
 public Task CreateViewAsync <TDocument, TResult>(string viewName, string viewOn, PipelineDefinition <TDocument, TResult> pipeline, CreateViewOptions <TDocument> options = null, CancellationToken cancellationToken = default)
 {
     throw new NotImplementedException();
 }
コード例 #14
0
 public Task CreateViewAsync <TDocument, TResult>(string viewName, string viewOn, PipelineDefinition <TDocument, TResult> pipeline, CreateViewOptions <TDocument> options = null, CancellationToken cancellationToken = default(CancellationToken))
 {
     CreateView(viewName, viewOn, pipeline, options, cancellationToken);
     return(Task.CompletedTask);
 }
コード例 #15
0
 public abstract void CreateView <TDocument, TResult>(string viewName, string viewOn, PipelineDefinition <TDocument, TResult> pipeline, CreateViewOptions <TDocument> options = null, CancellationToken cancellationToken = default(CancellationToken));
コード例 #16
0
 public Task CreateViewAsync <TDocument, TResult>(string viewName, string viewOn, PipelineDefinition <TDocument, TResult> pipeline, CreateViewOptions <TDocument> options = null, CancellationToken cancellationToken = default(CancellationToken)) => _database.CreateViewAsync(viewName, viewOn, pipeline, options, cancellationToken);
コード例 #17
0
        public void CreateView_should_execute_a_CreateViewOperation_with_the_expected_Collation(
            [Values(null, "en_US", "fr_CA")]
            string locale,
            [Values(false, true)]
            bool async)
        {
            var pipeline = new BsonDocumentStagePipelineDefinition<BsonDocument, BsonDocument>(new BsonDocument[0]);
            var collation = locale == null ? null : new Collation(locale);
            var options = new CreateViewOptions<BsonDocument>
            {
                Collation = collation
            };

            if (async)
            {
                _subject.CreateViewAsync<BsonDocument, BsonDocument>("viewName", "viewOn", pipeline, options, CancellationToken.None).GetAwaiter().GetResult();
            }
            else
            {
                _subject.CreateView<BsonDocument, BsonDocument>("viewName", "viewOn", pipeline, options, CancellationToken.None);
            }

            var call = _operationExecutor.GetWriteCall<BsonDocument>();
            var operation = call.Operation.Should().BeOfType<CreateViewOperation>().Subject;
            operation.Collation.Should().BeSameAs(collation);
        }
コード例 #18
0
 public virtual Task CreateViewAsync <TDocument, TResult>(IClientSessionHandle session, string viewName, string viewOn, PipelineDefinition <TDocument, TResult> pipeline, CreateViewOptions <TDocument> options = null, CancellationToken cancellationToken = new CancellationToken()) => throw new NotImplementedException();
コード例 #19
0
ファイル: frmCreateView.cs プロジェクト: magicdict/MongoCola
 /// <summary>
 ///     确定
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void cmdOK_Click(object sender, EventArgs e)
 {
     try
     {
         var pipeline = new BsonDocumentStagePipelineDefinition<BsonDocument, BsonDocument>(stages.Values.Select(x => (BsonDocument)x));
         CreateViewOptions<BsonDocument> OptionalDoc = null;
         if (mCollation != null)
         {
             OptionalDoc = new CreateViewOptions<BsonDocument>();
             OptionalDoc.Collation = mCollation;
         }
         RuntimeMongoDbContext.GetCurrentIMongoDataBase().CreateView(txtViewName.Text, cmbViewOn.Text, pipeline, OptionalDoc);
     }
     catch (Exception ex)
     {
         Utility.ExceptionDeal(ex);
     }
 }