コード例 #1
0
        public void CreateMapReduceIndex()
        {
            var mapping = new Database.Data.DynamicQueryMapping
            {
                AggregationOperation = AggregationOperation.Count,
                Items = new[]
                {
                    new DynamicQueryMappingItem
                    {
                        From = "User.Name",
                        To   = "UserName"
                    }
                }
            };


            IndexDefinition definition = mapping.CreateIndexDefinition();

            Assert.Equal(@"from doc in docs
select new { UserName = doc.User.Name, Count = 1 }", definition.Map);

            Assert.Equal(@"from result in results
group result by result.UserName
into g
select new
{
	UserName = g.Key,
	Count = g.Sum(x=>x.Count)
}
", definition.Reduce);
        }
コード例 #2
0
        public void CanExtractTermsFromEqualityQuery()
        {
            using (var database = CreateDocumentDatabase())
            {
                Database.Data.DynamicQueryMapping mapping = Database.Data.DynamicQueryMapping.Create(database, "Term:Whatever", null);

                Assert.Equal("Term", mapping.Items[0].From);
            }
        }
コード例 #3
0
        public void CanExtractTermsFromEqualityQuery()
        {
            Database.Data.DynamicQueryMapping mapping =
                Database.Data.DynamicQueryMapping.Create(new DocumentDatabase(new RavenConfiguration {
                RunInMemory = true
            }),
                                                         "Term:Whatever", null);

            Assert.Equal("Term", mapping.Items[0].From);
        }
コード例 #4
0
        public void CanExtractMultipleTermsQuery()
        {
            using (var database = CreateDocumentDatabase())
            {
                Database.Data.DynamicQueryMapping mapping = Database.Data.DynamicQueryMapping.Create(database, "Term:Whatever OR Term2:[0 TO 10]", null);


                Assert.Equal(2, mapping.Items.Length);

                Assert.True(mapping.Items.Any(x => x.From == "Term"));

                Assert.True(mapping.Items.Any(x => x.From == "Term2"));
            }
        }
コード例 #5
0
        public void CanExtractMultipleTermsQuery()
        {
            Database.Data.DynamicQueryMapping mapping =
                Database.Data.DynamicQueryMapping.Create(new DocumentDatabase(new RavenConfiguration {
                RunInMemory = true
            }),
                                                         "Term:Whatever OR Term2:[0 TO 10]", null);


            Assert.Equal(2, mapping.Items.Length);

            Assert.True(mapping.Items.Any(x => x.From == "Term"));

            Assert.True(mapping.Items.Any(x => x.From == "Term2"));
        }
コード例 #6
0
        public void CanExtractTermsFromComplexQuery()
        {
            using (var database = CreateDocumentDatabase())
            {
                Database.Data.DynamicQueryMapping mapping = Database.Data.DynamicQueryMapping.Create(database, "+(Term:bar Term2:baz) +Term3:foo -Term4:rob", null);

                Assert.Equal(4, mapping.Items.Length);

                Assert.True(mapping.Items.Any(x => x.From == "Term"));

                Assert.True(mapping.Items.Any(x => x.From == "Term2"));

                Assert.True(mapping.Items.Any(x => x.From == "Term3"));

                Assert.True(mapping.Items.Any(x => x.From == "Term4"));
            }
        }
コード例 #7
0
        public void CreateDefinitionSupportsNestedProperties()
        {
            var mapping = new Database.Data.DynamicQueryMapping
            {
                Items = new[]
                {
                    new DynamicQueryMappingItem
                    {
                        From = "User.Name",
                        To   = "UserName"
                    }
                }
            };

            IndexDefinition definition = mapping.CreateIndexDefinition();

            Assert.Equal("from doc in docs\nselect new {\n\tUserName = doc.User.Name\n}", definition.Map);
        }
コード例 #8
0
        public void CanExtractTermsFromComplexQuery()
        {
            Database.Data.DynamicQueryMapping mapping =
                Database.Data.DynamicQueryMapping.Create(new DocumentDatabase(new RavenConfiguration {
                RunInMemory = true
            }),
                                                         "+(Term:bar Term2:baz) +Term3:foo -Term4:rob", null);

            Assert.Equal(4, mapping.Items.Length);

            Assert.True(mapping.Items.Any(x => x.From == "Term"));

            Assert.True(mapping.Items.Any(x => x.From == "Term2"));

            Assert.True(mapping.Items.Any(x => x.From == "Term3"));

            Assert.True(mapping.Items.Any(x => x.From == "Term4"));
        }
コード例 #9
0
        public void CreateDefinitionSupportsArrayProperties()
        {
            var mapping = new Database.Data.DynamicQueryMapping

            {
                Items = new[]
                {
                    new DynamicQueryMappingItem
                    {
                        From = "Tags,Name",
                        To   = "docTagsName"
                    }
                }
            };

            IndexDefinition definition = mapping.CreateIndexDefinition();

            const string map = "from doc in docs\nselect new {\n\tdocTagsName = (\n\t\tfrom docTagsItem in ((IEnumerable<dynamic>)doc.Tags).DefaultIfEmpty()\n\t\tselect docTagsItem.Name).ToArray()\n}";

            Assert.Equal(map, definition.Map);
        }
コード例 #10
0
        public void CreateDefinitionSupportsArrayProperties()
        {
            var mapping = new Database.Data.DynamicQueryMapping

            {
                Items = new[]
                {
                    new DynamicQueryMappingItem
                    {
                        From = "Tags,Name",
                        To   = "docTagsName"
                    }
                }
            };


            IndexDefinition definition = mapping.CreateIndexDefinition();

            Assert.Equal(
                "from doc in docs\r\nfrom docTagsItem in ((IEnumerable<dynamic>)doc.Tags).DefaultIfEmpty()\r\nselect new { docTagsName = docTagsItem.Name }",
                definition.Map);
        }
コード例 #11
0
		public void CreateDefinitionSupportsSimpleProperties()
		{
			var mapping = new Database.Data.DynamicQueryMapping

			{
				Items = new[]
				{
					new DynamicQueryMappingItem
					{
						From = "Name",
						To = "Name"
					}
				}
			};


			IndexDefinition definition = mapping.CreateIndexDefinition();

			Assert.Equal("from doc in docs\r\nselect new { Name = doc.Name }", definition.Map);
		}
コード例 #12
0
		public void CreateDefinitionSupportsArrayProperties()
		{
			var mapping = new Database.Data.DynamicQueryMapping

			{
				Items = new[]
				{
					new DynamicQueryMappingItem
					{
						From = "Tags,Name",
						To = "docTagsName"
					}
				}
			};

			IndexDefinition definition = mapping.CreateIndexDefinition();

            Assert.Equal(@"from doc in docs
select new
{
	docTagsName = (from docTagsItem in ((IEnumerable<dynamic>)doc.Tags).DefaultIfEmpty() select docTagsItem.Name).ToArray()
}",
				definition.Map);
		}
コード例 #13
0
		public void CreateMapReduceIndex()
		{
			var mapping = new Database.Data.DynamicQueryMapping
			{
				AggregationOperation = AggregationOperation.Count,
				Items = new[]
				{
					new DynamicQueryMappingItem
					{
						From = "User.Name",
						To = "UserName"
					}
				}
			};


			IndexDefinition definition = mapping.CreateIndexDefinition();

			Assert.Equal(@"from doc in docs
select new { UserName = doc.User.Name, Count = 1 }", definition.Map);

			Assert.Equal(@"from result in results
group result by result.UserName
into g
select new
{
	UserName = g.Key,
	Count = g.Sum(x=>x.Count)
}
", definition.Reduce);
		}