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