Exemplo n.º 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());
        }
        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());
        }