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());
        }
Example #2
0
        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));
        }
Example #5
0
        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);
 }