public static async Task ConfigureSearchAsync <T>(this IElasticQueryBuilder builder, IRepositoryQuery query, IQueryOptions options, SearchDescriptor <T> search) where T : class, new() { if (search == null) { throw new ArgumentNullException(nameof(search)); } search.Query(await builder.BuildQueryAsync(query, options, search).AnyContext()); }
public static async Task <QueryContainer> BuildQueryAsync <T>(this IElasticQueryBuilder builder, IRepositoryQuery query, ICommandOptions options, SearchDescriptor <T> search) where T : class, new() { var ctx = new QueryBuilderContext <T>(query, options, search); await builder.BuildAsync(ctx).AnyContext(); return(new BoolQuery { Must = new[] { ctx.Query }, Filter = new[] { ctx.Filter ?? new MatchAllQuery() } }); }
public static async Task <QueryContainer> BuildQueryAsync <T>(this IElasticQueryBuilder builder, IRepositoryQuery query, IQueryOptions options, SearchDescriptor <T> search) where T : class, new() { var ctx = new QueryBuilderContext <T>(query, options, search); await builder.BuildAsync(ctx).AnyContext(); return(new FilteredQuery { Filter = ctx.Filter, Query = ctx.Query }); }
public void RegisterBefore <T>(IElasticQueryBuilder builder) { int priority = 0; var referenceBuilder = _registrations.FirstOrDefault(v => typeof(T) == v.Builder.GetType()); if (referenceBuilder != null) { priority = referenceBuilder.Priority - 1; } Register(new ElasticQueryBuilderRegistration(builder, priority)); }
public ElasticBand(IHttpClientFactory httpClientFactory, IElasticQueryBuilder queryBuilder) { _jsonSerializerOptions = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase, PropertyNameCaseInsensitive = true, WriteIndented = true }; _jsonSerializerOptions.Converters.Add(new JsonStringEnumConverter(JsonNamingPolicy.CamelCase)); _httpClientFactory = httpClientFactory; _queryBuilder = queryBuilder; }
public void Register(IElasticQueryBuilder builder, int priority) { Register(new ElasticQueryBuilderRegistration(builder, priority)); }
public ElasticQueryBuilderRegistration(IElasticQueryBuilder builder, int?priority = null) { Builder = builder; Priority = priority ?? Interlocked.Increment(ref _currentAutoPriority); }