internal static bool IsConditionless(INumericRangeQuery q) { return(q.Field.IsConditionless() || (q.GreaterThanOrEqualTo == null && q.LessThanOrEqualTo == null && q.GreaterThan == null && q.LessThan == null)); }
public Func <QueryContainerDescriptor <T>, QueryContainer> ComposeFilter <T>(FilterCriteriaArgs args) where T : class { var fieldName = string.IsNullOrWhiteSpace(args.ParentPropertyName) ? args.PropertyName : $"{args.ParentPropertyName}.{args.PropertyName}"; if (!(args.FilterValue is NumericFilterValue numericFilterValue)) { return(descriptor => descriptor); } if (args.Operator == OperatorType.Different) { return(DifferentOperatorFilter <T>(fieldName, args.ParentPropertyName, numericFilterValue.Value)); } INumericRangeQuery NumericRange(NumericRangeQueryDescriptor <T> descriptor) { INumericRangeQuery numericRangeQuery = descriptor .Name(fieldName) .Field(fieldName) .Relation(RangeRelation.Within); CreateRangeDescriptor(args.Operator, descriptor, numericFilterValue); return(numericRangeQuery); } Func <QueryContainerDescriptor <T>, QueryContainer> filter; if (string.IsNullOrWhiteSpace(args.ParentPropertyName)) { filter = q => q.Range(NumericRange); } else { filter = q => q.Nested(n => n .Path(args.ParentPropertyName) .Query(query => query.Range(NumericRange)) ); } return(filter); }
private Func <QueryContainerDescriptor <T>, QueryContainer> CreateRangeGroupForDuplicateField <T>(IEnumerable <FilterCriteriaArgs> duplicateOperatorFields, string propertyEntityName, string fieldName) where T : class { ICollection <Func <QueryContainerDescriptor <T>, QueryContainer> > numericFilterQueries = new List <Func <QueryContainerDescriptor <T>, QueryContainer> >(); foreach (var duplicateField in duplicateOperatorFields) { if (!(duplicateField.FilterValue is NumericFilterValue numericFilterValue)) { continue; } INumericRangeQuery NumericRange(NumericRangeQueryDescriptor <T> descriptor) { INumericRangeQuery numericRangeQuery = descriptor .Name($"{fieldName}.{numericFilterValue}") .Field(fieldName); CreateRangeDescriptor(duplicateField.Operator, descriptor, numericFilterValue); return(numericRangeQuery); } Func <QueryContainerDescriptor <T>, QueryContainer> filter; if (string.IsNullOrWhiteSpace(propertyEntityName)) { filter = q => q.Range(NumericRange); } else { filter = q => q.Nested(n => n .Path(propertyEntityName) .Query(query => query.Range(NumericRange)) ); } numericFilterQueries.Add(filter); } QueryContainer Filter(QueryContainerDescriptor <T> q) => q.Bool(b => b.Should(numericFilterQueries)); return(Filter); }
private Func <QueryContainerDescriptor <T>, QueryContainer> CreateRangeForDuplicateField <T>(string fieldName, string propertyEntityName, IList <FilterCriteriaArgs> duplicateFields) where T : class { INumericRangeQuery NumericRange(NumericRangeQueryDescriptor <T> descriptor) { INumericRangeQuery numericRangeQuery = descriptor .Name(fieldName) .Field(fieldName) .Relation(RangeRelation.Within); foreach (var duplicateField in duplicateFields) { if (!(duplicateField.FilterValue is NumericFilterValue value)) { continue; } CreateRangeDescriptor(duplicateField.Operator, descriptor, value); } return(numericRangeQuery); } Func <QueryContainerDescriptor <T>, QueryContainer> filter; if (string.IsNullOrWhiteSpace(propertyEntityName)) { filter = q => q.Range(NumericRange); } else { filter = q => q.Nested(n => n .Path(propertyEntityName) .Query(query => query.Range(NumericRange)) ); } return(filter); }
public virtual void Visit(INumericRangeQuery query) { }
public virtual void Visit(INumericRangeQuery query) => Write("numeric_range");
public void Visit(INumericRangeQuery query) => Write("numeric_range");
public override void Visit(INumericRangeQuery query) { NumericRangeQuery = query; base.Visit(query); }