private string VisitSortQuery(SortClause clause) { var visitor = new ElasticSearchDSLVisitor(SchemaRetrieverMock.CreateMockSchemaRetriever()); visitor.Visit(clause); return(clause.KustoQL); }
public void Visit_WithMissingOrder_ThrowsException() { var sortClause = new SortClause { FieldName = "myField", }; Assert.Throws(typeof(IllegalClauseException), () => VisitSortQuery(sortClause)); }
public string TestInnerElasticSortVisitor() { var sortClause = new SortClause { FieldName = "_myInternalField", }; return(VisitSortQuery(sortClause)); }
public void Visit_WithMissingFields_ThrowsException() { var sortClause = new SortClause { Order = "Desc", }; Assert.Throws(typeof(IllegalClauseException), () => VisitSortQuery(sortClause)); }
public string TestBasicSortVisitor() { var sortClause = new SortClause { FieldName = "myFieldName", Order = "ASC", }; return(VisitSortQuery(sortClause)); }
public string GeneratesClauseQuery() { var sortClause = new SortClause() { FieldName = "wibble", Order = "asc" }; var visitor = new ElasticSearchDSLVisitor(SchemaRetrieverMock.CreateMockSchemaRetriever()); visitor.Visit(sortClause); return(sortClause.KustoQL); }
public string IgnoresClausesWithUnderscore() { var sortClause = new SortClause() { FieldName = "_wibble" }; var visitor = new ElasticSearchDSLVisitor(SchemaRetrieverMock.CreateMockSchemaRetriever()); visitor.Visit(sortClause); return(sortClause.KustoQL); }
public override void VisitOrderByClause(OrderByClause orderByClause, QueryModel queryModel, int index) { int priority = _queryDescription.SortClauses.Count() - 1; foreach (var ordering in orderByClause.Orderings) { priority++; var expr = ordering.Expression; var dir = ordering.OrderingDirection; var crit = GetFieldSelector(queryModel, expr); var sortDirection = (dir == OrderingDirection.Asc) ? SortDirection.Ascending : SortDirection.Descending; var clause = new SortClause(crit, sortDirection, priority); _queryDescription.AddSortClause(clause); } }
/// <inheritdoc/> public override object ReadJson( JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var jo = JObject.Load(reader); var first = (JProperty)jo.First; var obj = new SortClause { FieldName = first.Name, Order = (string)first.First["order"], }; return(obj); }
/// <inheritdoc/> public void Visit(SortClause sortClause) { Ensure.IsNotNull(sortClause, nameof(sortClause)); Ensure.IsNotNull(sortClause, nameof(sortClause)); EnsureClause.StringIsNotNullOrEmpty(sortClause.FieldName, nameof(sortClause.FieldName)); if (sortClause.FieldName.StartsWith('_')) { // fields that start with "_" are internal to elastic and we want to disregard them sortClause.KustoQL = string.Empty; } else { EnsureClause.StringIsNotNullOrEmpty(sortClause.Order, nameof(sortClause.Order)); sortClause.KustoQL = $"{sortClause.FieldName} {sortClause.Order}"; } }
public void HiveQueryCacheKeyToFromJson() { var guid = Guid.NewGuid(); var guid2 = Guid.NewGuid(); var guid3 = Guid.NewGuid(); var resultFilterClause = new ResultFilterClause(typeof(string), ResultFilterType.Any, 0); var hiveId = new HiveId(guid); var expected = new HiveId(guid2); var fullHiveId = new HiveId(new Uri("content://blah/"), "nhibernate", new HiveIdValue(guid3)); var scopeStartId = new HiveId(Guid.NewGuid()); var fromClause = new FromClause(scopeStartId.AsEnumerableOfOne(), HierarchyScope.AncestorsOrSelf, FixedStatusTypes.Published, "default-type", new[] { hiveId, expected, fullHiveId }); var fieldPredicateExpression = new FieldPredicateExpression("title", ValuePredicateType.Equal, "blah"); var fieldPredicateExpression2 = new FieldPredicateExpression("title", ValuePredicateType.Equal, "blah"); var binary = Expression.MakeBinary(ExpressionType.ExclusiveOr, fieldPredicateExpression, fieldPredicateExpression2); var aSortClause = new SortClause(new FieldSelectorExpression("tag"), SortDirection.Descending, 2); //var key = new HiveQueryCacheKey(new QueryDescription(resultFilterClause, fromClause, fieldPredicateExpression, Enumerable.Empty<SortClause>())); var key = CacheKey.Create(new HiveQueryCacheKey(new QueryDescription(resultFilterClause, fromClause, fieldPredicateExpression, aSortClause.AsEnumerableOfOne()))); var keyJson = key.ToJson(); var keyBack = (CacheKey <HiveQueryCacheKey>)keyJson; // var keyJsonTwice = keyBack.ToJson(); Assert.That(keyBack, Is.Not.Null); //Assert.That(keyJson, Is.EqualTo(keyJsonTwice)); //NOTE: Criteria does not deserialize at the moment, but caching implementation should find matching keys OK still if it maintains an inner collection of original key objects if (key.Original.Criteria != null) Assert.That(keyBack.Original.Criteria, Is.Not.Null); Assert.True(keyBack.Original.ResultFilters.Any()); Assert.That(keyBack.Original.ResultFilters.First().ResultType, Is.EqualTo(typeof(string))); Assert.That(keyBack.Original.SortClauses.Count(), Is.EqualTo(key.Original.SortClauses.Count())); Assert.That(keyBack.Original.SortClauses.FirstOrDefault().Direction, Is.EqualTo(SortDirection.Descending)); Assert.That(keyBack.Original.SortClauses.FirstOrDefault().Priority, Is.EqualTo(2)); Assert.That(keyBack.Original.From.HierarchyScope, Is.EqualTo(key.Original.From.HierarchyScope)); Assert.That(keyBack.Original.From.RequiredEntityIds.Count(), Is.EqualTo(3)); Assert.That(keyBack.Original.From.RequiredEntityIds.FirstOrDefault(), Is.EqualTo(hiveId)); Assert.That(keyBack.Original.From.RequiredEntityIds.FirstOrDefault().Value.Type, Is.EqualTo(HiveIdValueTypes.Guid)); Assert.That(keyBack.Original.From.RequiredEntityIds.ElementAt(1), Is.EqualTo(expected)); Assert.That(keyBack.Original.From.RequiredEntityIds.ElementAt(1).Value.Type, Is.EqualTo(HiveIdValueTypes.Guid)); Assert.That(keyBack.Original.From.RequiredEntityIds.ElementAt(2), Is.EqualTo(fullHiveId)); Assert.That(keyBack.Original.From.RequiredEntityIds.ElementAt(2).Value.Type, Is.EqualTo(HiveIdValueTypes.Guid)); Assert.That(keyBack.Original.From.RequiredEntityIds.ElementAt(2).ProviderId, Is.EqualTo("nhibernate")); Assert.That(keyBack.Original.From.RequiredEntityIds.ElementAt(2).ProviderGroupRoot.ToString(), Is.EqualTo(fullHiveId.ProviderGroupRoot.ToString())); }