Esempio n. 1
0
        public override void Visit(TermRangeNode node, IQueryVisitorContext context)
        {
            var    validationInfo = context.GetValidationInfo();
            string field          = null;

            if (!String.IsNullOrEmpty(node.Field))
            {
                field = String.Equals(validationInfo.QueryType, QueryType.Query) ? node.GetFullName() : node.Field;
                if (!field.StartsWith("@"))
                {
                    validationInfo.ReferencedFields.Add(field);
                }
            }
            else
            {
                if (String.Equals(validationInfo.QueryType, QueryType.Aggregation))
                {
                    validationInfo.IsValid = false;
                }

                var nameParts = node.GetNameParts();
                if (nameParts.Length == 0)
                {
                    validationInfo.ReferencedFields.Add("_all");
                }
            }

            AddOperation(validationInfo, node.GetOperationType(), field);
        }
        public override void Visit(TermRangeNode node, IQueryVisitorContext context)
        {
            var validationInfo = context.GetValidationInfo();

            AddField(validationInfo, node, context);
            AddOperation(validationInfo, node.GetOperationType(), node.Field);

            // aggregations must have a field
            if (context.QueryType == QueryType.Aggregation && String.IsNullOrEmpty(node.Field))
            {
                validationInfo.IsValid = false;
            }
        }
Esempio n. 3
0
 public override void Visit(TermRangeNode node, IQueryVisitorContext context)
 {
     if (!String.IsNullOrEmpty(node.Field))
     {
         AddField(node);
     }
     else
     {
         var nameParts = node.GetNameParts();
         if (nameParts.Length == 0)
         {
             _fields.Add("_all");
         }
     }
 }
Esempio n. 4
0
        public override void Visit(TermRangeNode node, IQueryVisitorContext context)
        {
            if (!(context is IElasticQueryVisitorContext elasticContext) || !elasticContext.IsGeoPropertyType(node.Field))
            {
                return;
            }

            var box = new BoundingBox {
                TopLeft = node.Min, BottomRight = node.Max
            };
            var query = new GeoBoundingBoxQuery {
                BoundingBox = box, Field = node.Field
            };

            node.SetQuery(query);
        }
Esempio n. 5
0
        public override void Visit(TermRangeNode node, IQueryVisitorContext context)
        {
            _writer.WriteLine("Term Range: ");
            _writer.Indent++;
            _writer.WriteLineIf(node.Field != null, "Field: {0}", node.Field);
            _writer.WriteLineIf(node.IsNegated.HasValue, "IsNegated: {0}", node.IsNegated);
            _writer.WriteLineIf(node.Prefix != null, "Prefix: {0}", node.Prefix);
            _writer.WriteLineIf(node.Operator != null, "Operator: {0}", node.Operator);
            _writer.WriteLineIf(node.Max != null, "Max: {0}", node.Max);
            _writer.WriteLineIf(node.Min != null, "Min: {0}", node.Min);
            _writer.WriteLineIf(node.MinInclusive.HasValue, "MinInclusive: {0}", node.MinInclusive);
            _writer.WriteLineIf(node.MaxInclusive.HasValue, "MaxInclusive: {0}", node.MaxInclusive);

            WriteData(node);

            _writer.Indent--;
        }
 public override Task VisitAsync(TermRangeNode node, IQueryVisitorContext context)
 {
     node.Field = GetCustomFieldName(node.Field, new [] { node.Min, node.Max });
     return(Task.CompletedTask);
 }
        public static QueryBase GetDefaultQuery(this TermRangeNode node, IQueryVisitorContext context)
        {
            if (!(context is IElasticQueryVisitorContext elasticContext))
            {
                throw new ArgumentException("Context must be of type IElasticQueryVisitorContext", nameof(context));
            }

            string field = node.Field;

            if (elasticContext.MappingResolver.IsDatePropertyType(field))
            {
                var range = new DateRangeQuery {
                    Field = field, TimeZone = node.Boost ?? node.GetTimeZone(elasticContext.DefaultTimeZone)
                };
                if (!String.IsNullOrWhiteSpace(node.UnescapedMin) && node.UnescapedMin != "*")
                {
                    if (node.MinInclusive.HasValue && !node.MinInclusive.Value)
                    {
                        range.GreaterThan = node.UnescapedMin;
                    }
                    else
                    {
                        range.GreaterThanOrEqualTo = node.UnescapedMin;
                    }
                }

                if (!String.IsNullOrWhiteSpace(node.UnescapedMax) && node.UnescapedMax != "*")
                {
                    if (node.MaxInclusive.HasValue && !node.MaxInclusive.Value)
                    {
                        range.LessThan = node.UnescapedMax;
                    }
                    else
                    {
                        range.LessThanOrEqualTo = node.UnescapedMax;
                    }
                }

                return(range);
            }
            else
            {
                var range = new TermRangeQuery {
                    Field = field
                };
                if (!String.IsNullOrWhiteSpace(node.UnescapedMin) && node.UnescapedMin != "*")
                {
                    if (node.MinInclusive.HasValue && !node.MinInclusive.Value)
                    {
                        range.GreaterThan = node.UnescapedMin;
                    }
                    else
                    {
                        range.GreaterThanOrEqualTo = node.UnescapedMin;
                    }
                }

                if (!String.IsNullOrWhiteSpace(node.UnescapedMax) && node.UnescapedMax != "*")
                {
                    if (node.MaxInclusive.HasValue && !node.MaxInclusive.Value)
                    {
                        range.LessThan = node.UnescapedMax;
                    }
                    else
                    {
                        range.LessThanOrEqualTo = node.UnescapedMax;
                    }
                }

                return(range);
            }
        }
 public override void Visit(TermRangeNode node, IQueryVisitorContext context)
 {
     ApplyAlias(node, context);
 }
 public override void Visit(TermRangeNode node, IQueryVisitorContext context)
 {
     _builder.Append(node);
 }
        public static QueryBase GetDefaultQuery(this TermRangeNode node, IQueryVisitorContext context)
        {
            if (!(context is IElasticQueryVisitorContext elasticContext))
            {
                throw new ArgumentException("Context must be of type IElasticQueryVisitorContext", nameof(context));
            }

            string nodeFullName = node.GetFullName();

            if (elasticContext.IsDatePropertyType(nodeFullName))
            {
                string timezone = GetString(context, "TimeZone");
                var    range    = new DateRangeQuery {
                    Field = nodeFullName, TimeZone = timezone
                };
                if (!String.IsNullOrWhiteSpace(node.UnescapedMin))
                {
                    if (node.MinInclusive.HasValue && !node.MinInclusive.Value)
                    {
                        range.GreaterThan = node.UnescapedMin;
                    }
                    else
                    {
                        range.GreaterThanOrEqualTo = node.UnescapedMin;
                    }
                }

                if (!String.IsNullOrWhiteSpace(node.UnescapedMax))
                {
                    if (node.MaxInclusive.HasValue && !node.MaxInclusive.Value)
                    {
                        range.LessThan = node.UnescapedMax;
                    }
                    else
                    {
                        range.LessThanOrEqualTo = node.UnescapedMax;
                    }
                }

                return(range);
            }
            else
            {
                var range = new TermRangeQuery {
                    Field = nodeFullName
                };
                if (!String.IsNullOrWhiteSpace(node.UnescapedMin))
                {
                    if (node.MinInclusive.HasValue && !node.MinInclusive.Value)
                    {
                        range.GreaterThan = node.UnescapedMin;
                    }
                    else
                    {
                        range.GreaterThanOrEqualTo = node.UnescapedMin;
                    }
                }

                if (!String.IsNullOrWhiteSpace(node.UnescapedMax))
                {
                    if (node.MaxInclusive.HasValue && !node.MaxInclusive.Value)
                    {
                        range.LessThan = node.UnescapedMax;
                    }
                    else
                    {
                        range.LessThanOrEqualTo = node.UnescapedMax;
                    }
                }

                return(range);
            }
        }
Esempio n. 11
0
 public void Visit(TermRangeNode node)
 {
     node.Field = GetCustomFieldName(node.Field, node.Min, node.Max) ?? node.Field;
 }
 public virtual void Visit(TermRangeNode node, IQueryVisitorContext context)
 {
 }
 public override void Visit(TermRangeNode node, IQueryVisitorContext context)
 {
     AddField(node, context);
 }
 public void Visit(TermRangeNode node, IQueryVisitorContext context)
 {
     node.Field = GetCustomFieldName(node.Field, node.Min, node.Max) ?? node.Field;
 }
 public void Visit(TermRangeNode node)
 {
     node.Field = GetCustomFieldName(node.Field, node.Min, node.Max) ?? node.Field;
 }
 public Task VisitAsync(TermRangeNode node, IQueryVisitorContext context)
 {
     return(Visitor.VisitAsync(node, context));
 }
 public virtual Task VisitAsync(TermRangeNode node, IQueryVisitorContext context)
 {
     Visit(node, context);
     return(Task.CompletedTask);
 }