public static async Task <QueryValidationInfo> RunAsync(IQueryNode node, IQueryVisitorContextWithValidator context = null) { if (context == null) { context = new QueryVisitorContextWithValidator(); } await new ValidationVisitor().AcceptAsync(node, context); return(context.GetValidationInfo()); }
public static async Task <QueryValidationInfo> RunAsync(IQueryNode node, IQueryVisitorContextWithValidator context = null) { if (context == null) { context = new QueryVisitorContextWithValidator(); } var visitor = new ChainedQueryVisitor(); if (context.QueryType == QueryType.Aggregation) { visitor.AddVisitor(new AssignOperationTypeVisitor()); } if (context.QueryType == QueryType.Sort) { visitor.AddVisitor(new TermToFieldVisitor()); } visitor.AddVisitor(new ValidationVisitor()); await visitor.AcceptAsync(node, context); return(context.GetValidationInfo()); }
public static bool Run(IQueryNode node, IEnumerable <string> allowedFields, IQueryVisitorContextWithValidator context = null) { return(RunAsync(node, allowedFields, context).GetAwaiter().GetResult()); }
public static Task <bool> RunAsync(IQueryNode node, IEnumerable <string> allowedFields, IQueryVisitorContextWithValidator context = null) { var fieldSet = new HashSet <string>(allowedFields, StringComparer.OrdinalIgnoreCase); return(RunAsync(node, info => Task.FromResult(info.ReferencedFields.Any(f => !fieldSet.Contains(f))), context)); }
public static bool Run(IQueryNode node, Func <QueryValidationInfo, Task <bool> > validator, IQueryVisitorContextWithValidator context = null) { return(RunAsync(node, validator, context).GetAwaiter().GetResult()); }
public static async Task <bool> RunAsync(IQueryNode node, Func <QueryValidationInfo, Task <bool> > validator, IQueryVisitorContextWithValidator context = null) { if (context == null) { context = new QueryVisitorContextWithValidator(); } await new ValidationVisitor().AcceptAsync(node, context); var validationInfo = context.GetValidationInfo(); return(await validator(validationInfo)); }
public static QueryValidationInfo Run(IQueryNode node, IQueryVisitorContextWithValidator context = null) { return(RunAsync(node, context).GetAwaiter().GetResult()); }