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