コード例 #1
0
        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());
        }
コード例 #2
0
        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());
        }
コード例 #3
0
 public static bool Run(IQueryNode node, IEnumerable <string> allowedFields, IQueryVisitorContextWithValidator context = null)
 {
     return(RunAsync(node, allowedFields, context).GetAwaiter().GetResult());
 }
コード例 #4
0
        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));
        }
コード例 #5
0
 public static bool Run(IQueryNode node, Func <QueryValidationInfo, Task <bool> > validator, IQueryVisitorContextWithValidator context = null)
 {
     return(RunAsync(node, validator, context).GetAwaiter().GetResult());
 }
コード例 #6
0
        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));
        }
コード例 #7
0
 public static QueryValidationInfo Run(IQueryNode node, IQueryVisitorContextWithValidator context = null)
 {
     return(RunAsync(node, context).GetAwaiter().GetResult());
 }