private void btnAddConnection_Click(object sender, RoutedEventArgs e)
        {
            AddDatabaseCommand addDatabaseCommand = new AddDatabaseCommand();

            addDatabaseCommand.Owner = this;
            addDatabaseCommand.Run();
        }
Example #2
0
        public async Task AutoIndex_WhenCreateSecondIndexForTwoProperty_ShouldUseOnlyIfItIsMoreUpdatedThenTheFirstIndex()
        {
            Initialize();
            var narrowIndexDefinition = new AutoMapIndexDefinition("Users", new[]
            {
                new AutoIndexField
                {
                    Name    = "Name",
                    Storage = FieldStorage.No,
                },
            });

            AddIndex(narrowIndexDefinition);

            using (var context = DocumentsOperationContext.ShortTermSingleUse(_documentDatabase))
                using (var tx = context.OpenWriteTransaction())
                    using (var doc = CreateDocument(context, "users/1", new DynamicJsonValue
                    {
                        ["Name"] = "Grisha",
                        ["Company"] = "Hibernating Rhinos",
                        [Constants.Documents.Metadata.Key] = new DynamicJsonValue
                        {
                            [Constants.Documents.Metadata.Collection] = "Users"
                        }
                    }))
                    {
                        _documentDatabase.DocumentsStorage.Put(context, "users/1", null, doc);
                        tx.Commit();
                    }

            var narrowIndex = GetIndex(narrowIndexDefinition.Name);

            WaitForIndexMap(narrowIndex, 1);

            _documentDatabase.IndexStore.StopIndexing();

            var extendedIndexDefinition = new AutoMapIndexDefinition("Users", new[]
            {
                new AutoIndexField
                {
                    Name    = "Name",
                    Storage = FieldStorage.No,
                },
                new AutoIndexField
                {
                    Name    = "Company",
                    Storage = FieldStorage.No,
                },
            });

            AddIndex(extendedIndexDefinition);

            _documentDatabase.IndexStore.RunIdleOperations();
            Assert.Equal(2, _documentDatabase.IndexStore.GetIndexes().Count());

            _documentDatabase.IndexStore.StartIndexing();

            var extendedIndex = GetIndex(extendedIndexDefinition.Name);

            WaitForIndexMap(extendedIndex, 1);

            {
                //Database records needs to change between `RunIdleOperations` calls to apply auto indexes modifications
                var addDatabaseCommand = new AddDatabaseCommand(Guid.NewGuid().ToString())
                {
                    Record = _documentDatabase.ReadDatabaseRecord(),
                    Name   = _documentDatabase.Name
                };
                await _documentDatabase.ServerStore.SendToLeaderAsync(addDatabaseCommand);
            }

            _documentDatabase.IndexStore.RunIdleOperations();
            Assert.Equal(1, _documentDatabase.IndexStore.GetIndexes().Count());
        }