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))); }
private static void ParseSkip(Expression node, SearchBody searchBody) { Log.WriteLine(string.Format(" -> Parse skip : {0}", node)); searchBody.From = ExpressionParser.ParseConstant <int>(node); }
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); }
private static void ParseTake(Expression node, SearchBody searchBody) { Log.WriteLine(string.Format(" -> Parse take : {0}", node)); searchBody.Size = ExpressionParser.ParseConstant <int>(node); }
private static void ParseQuery(Expression node, SearchBody searchBody) { Log.WriteLine(string.Format(" -> Parse query : {0}", node)); searchBody.Query = QueryParser.Parse(ExpressionParser.Strip(node)); }
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, }); }
private static void ParseQuery(Expression node, FilteredQuery query) { Log.WriteLine(string.Format(" -> Parse query : {0}", node)); query.Filtered.Query = QueryParser.Parse(ExpressionParser.Strip(node)); }
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))); }