public ElasticQueryParserConfiguration UseAliases(AliasResolver defaultAliasResolver, int priority = 50)
        {
            DefaultAliasResolver = defaultAliasResolver;

            var visitor = new AliasedQueryVisitor();

            QueryVisitor.AddVisitor(visitor, priority);
            SortVisitor.AddVisitor(visitor, priority);

            AggregationVisitor.AddVisitor(new AliasedQueryVisitor(false), priority);
            return(this);
        }
Esempio n. 2
0
        public static T SetRootAliasResolver <T>(this T context, AliasResolver aliasResolver) where T : IQueryVisitorContext
        {
            var aliasContext = context as IQueryVisitorContextWithAliasResolver;

            if (aliasContext == null)
            {
                throw new ArgumentException("Context must be of type IQueryVisitorContextWithAliasResolver", nameof(context));
            }

            aliasContext.RootAliasResolver = aliasResolver;

            return(context);
        }
        private GetAliasResult InternalResolve(string field, AliasResolver resolver)
        {
            var result = resolver?.Invoke(field);

            if (result != null)
            {
                return(new GetAliasResult {
                    Name = result.Name,
                    Resolver = result.Resolver // need to wrap this
                });
            }

            return(null);
        }
 public static Task <IQueryNode> RunAsync(IQueryNode node, AliasResolver resolver, IQueryVisitorContextWithAliasResolver context = null)
 {
     return(new AliasedQueryVisitor().AcceptAsync(node, context ?? new QueryVisitorContextWithAliasResolver {
         RootAliasResolver = resolver
     }));
 }
 public static AliasResolver GetScopedResolver(AliasResolver resolver, string scope)
 {
     return(f => resolver(!String.IsNullOrEmpty(scope) ? scope + "." + f : f));
 }
        private GetAliasResult InternalResolve(string[] fieldParts, int index, AliasResolver resolver)
        {
            string part = index == 0 ? fieldParts[0] : String.Join(".", fieldParts.Take(index + 1));

            return(InternalResolve(part, resolver));
        }
 public static IQueryNode Run(IQueryNode node, AliasResolver resolver, IQueryVisitorContextWithAliasResolver context = null)
 {
     return(RunAsync(node, resolver, context).GetAwaiter().GetResult());
 }
 public static T RootAliasResolver <T>(this T options, AliasResolver rootAliasResolver) where T : ICommandOptions
 {
     options.Values.Set(RootAliasResolverKey, rootAliasResolver);
     return(options);
 }
 public static void SetAliasResolver(this IQueryNode node, AliasResolver resolver)
 {
     node.Data[AliasResolverKey] = resolver;
 }