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); }
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); } }
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); }
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")); } }
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")); }
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")); } }
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); }
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")); }
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); }
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); }
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); }
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); }