Example #1
0
        private static Filter Missing(Expression node)
        {
            Log.WriteLine(string.Format("    -> Node         : {0}", node));

            return(new MissingFilter {
                Missing = new MissingDefinition {
                    Field = ExpressionParser.ParseMember(node)
                }
            });
        }
Example #2
0
        private static Filter Exists(Expression node)
        {
            Log.WriteLine(string.Format("    -> Node         : {0}", node));

            return(new ExistsFilter {
                Exists = new ExistsDefinition {
                    Field = ExpressionParser.ParseMember(node)
                }
            });
        }
Example #3
0
        private static void ParseSort(Expression node, SearchBody searchBody, SortDirection direction)
        {
            Log.WriteLine(string.Format("  -> Parse sort     : {0}", node));

            AddSort(searchBody, ExpressionParser.ParseMember(ExpressionParser.Strip(node)), direction);
        }
Example #4
0
        public static RangeDefinition Parse(BinaryExpression node)
        {
            var field = ExpressionParser.SingleOrDefault <MemberExpression>(node.Left, node.Right);
            var value = ExpressionParser.ParseNodes <object>(ExpressionType.Constant, ExpressionParser.ParseConstant <object>, node.Left, node.Right);

            var criteria = new RangeCriteria();

            if (object.ReferenceEquals(node.Left, field) == true)
            {
                switch (node.NodeType)
                {
                case ExpressionType.GreaterThan:
                    criteria.Greater = value;
                    break;

                case ExpressionType.GreaterThanOrEqual:
                    criteria.GreaterOrEqual = value;
                    break;

                case ExpressionType.LessThan:
                    criteria.Smaller = value;
                    break;

                case ExpressionType.LessThanOrEqual:
                    criteria.SmallerOrEqual = value;
                    break;

                default:
                    throw new Exception("invalid range operator");
                }
            }
            else
            {
                switch (node.NodeType)
                {
                case ExpressionType.GreaterThan:
                    criteria.Smaller = value;
                    break;

                case ExpressionType.GreaterThanOrEqual:
                    criteria.SmallerOrEqual = value;
                    break;

                case ExpressionType.LessThan:
                    criteria.Greater = value;
                    break;

                case ExpressionType.LessThanOrEqual:
                    criteria.GreaterOrEqual = value;
                    break;

                default:
                    throw new Exception("invalid range operator");
                }
            }

            return(new RangeDefinition
            {
                Field = ExpressionParser.ParseMember(field),
                Criteria = criteria,
            });
        }