public override void Visit(TermRangeNode node, IQueryVisitorContext context) { var validationInfo = context.GetValidationInfo(); string field = null; if (!String.IsNullOrEmpty(node.Field)) { field = String.Equals(validationInfo.QueryType, QueryType.Query) ? node.GetFullName() : node.Field; if (!field.StartsWith("@")) { validationInfo.ReferencedFields.Add(field); } } else { if (String.Equals(validationInfo.QueryType, QueryType.Aggregation)) { validationInfo.IsValid = false; } var nameParts = node.GetNameParts(); if (nameParts.Length == 0) { validationInfo.ReferencedFields.Add("_all"); } } AddOperation(validationInfo, node.GetOperationType(), field); }
public override void Visit(MissingNode node, IQueryVisitorContext context) { var validationInfo = context.GetValidationInfo(); AddField(validationInfo, node, context); AddOperation(validationInfo, "missing", node.Field); }
public override async Task VisitAsync(GroupNode node, IQueryVisitorContext context) { var validationInfo = context.GetValidationInfo(); if (validationInfo.QueryType == null) { validationInfo.QueryType = node.GetQueryType(); } string field = null; if (!String.IsNullOrEmpty(node.Field)) { field = String.Equals(validationInfo.QueryType, QueryType.Query) ? node.GetFullName() : node.Field; if (!field.StartsWith("@")) { validationInfo.ReferencedFields.Add(field); } if (node.HasParens) { validationInfo.CurrentNodeDepth++; } } AddOperation(validationInfo, node.GetOperationType(), field); await base.VisitAsync(node, context).ConfigureAwait(false); if (!String.IsNullOrEmpty(node.Field) && node.HasParens) { validationInfo.CurrentNodeDepth--; } }
public override void Visit(TermRangeNode node, IQueryVisitorContext context) { var validationInfo = context.GetValidationInfo(); AddField(validationInfo, node, context); AddOperation(validationInfo, node.GetOperationType(), node.Field); // aggregations must have a field if (context.QueryType == QueryType.Aggregation && String.IsNullOrEmpty(node.Field)) { validationInfo.IsValid = false; } }
public override async Task <IQueryNode> AcceptAsync(IQueryNode node, IQueryVisitorContext context) { await node.AcceptAsync(this, context).ConfigureAwait(false); var validationInfo = context.GetValidationInfo(); var validator = context.GetValidator(); if (validator != null && ShouldThrow && !await validator(validationInfo)) { throw new QueryValidationException(); } return(node); }
public override void Visit(MissingNode node, IQueryVisitorContext context) { var validationInfo = context.GetValidationInfo(); string field = null; if (!String.IsNullOrEmpty(node.Field)) { field = String.Equals(validationInfo.QueryType, QueryType.Query) ? node.GetFullName() : node.Field; if (!field.StartsWith("@")) { validationInfo.ReferencedFields.Add(field); } } AddOperation(validationInfo, "missing", field); }
public override async Task VisitAsync(GroupNode node, IQueryVisitorContext context) { var validationInfo = context.GetValidationInfo(); if (node.HasParens) { validationInfo.CurrentNodeDepth++; } if (!String.IsNullOrEmpty(node.Field)) { AddField(validationInfo, node, context); } AddOperation(validationInfo, node.GetOperationType(), node.Field); await base.VisitAsync(node, context).ConfigureAwait(false); if (node.HasParens) { validationInfo.CurrentNodeDepth--; } }