Beispiel #1
0
        private static void ParseFilter(Expression node, SearchBody searchBody)
        {
            Log.WriteLine(string.Format("  -> Parse filter   : {0}", node));

            searchBody.Filter = FilterCombiner.CombineAnd(searchBody.Filter, FilterParser.Parse(ExpressionParser.Strip(node)));
        }
Beispiel #2
0
        private static void ParseSkip(Expression node, SearchBody searchBody)
        {
            Log.WriteLine(string.Format("  -> Parse skip     : {0}", node));

            searchBody.From = ExpressionParser.ParseConstant <int>(node);
        }
Beispiel #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);
        }
Beispiel #4
0
        private static void ParseTake(Expression node, SearchBody searchBody)
        {
            Log.WriteLine(string.Format("  -> Parse take     : {0}", node));

            searchBody.Size = ExpressionParser.ParseConstant <int>(node);
        }
Beispiel #5
0
        private static void ParseQuery(Expression node, SearchBody searchBody)
        {
            Log.WriteLine(string.Format("  -> Parse query    : {0}", node));

            searchBody.Query = QueryParser.Parse(ExpressionParser.Strip(node));
        }
Beispiel #6
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,
            });
        }
Beispiel #7
0
        private static void ParseQuery(Expression node, FilteredQuery query)
        {
            Log.WriteLine(string.Format("   -> Parse query   : {0}", node));

            query.Filtered.Query = QueryParser.Parse(ExpressionParser.Strip(node));
        }
Beispiel #8
0
        private static void ParseFilter(Expression node, FilteredQuery query)
        {
            Log.WriteLine(string.Format("   -> Parse filter  : {0}", node));

            query.Filtered.Filter = FilterCombiner.CombineAnd(query.Filtered.Filter, FilterParser.Parse(ExpressionParser.Strip(node)));
        }