public Expression Translate(MethodCallExpression methodCallExpression, N1QlExpressionTreeVisitor expressionTreeVisitor) { if (methodCallExpression == null) { throw new ArgumentNullException("methodCallExpression"); } var expression = expressionTreeVisitor.Expression; expressionTreeVisitor.VisitExpression(methodCallExpression.Arguments[0]); if (methodCallExpression.Arguments.Count > 1) { var constantExpression = methodCallExpression.Arguments[1] as ConstantExpression; if (constantExpression == null) { throw new NotSupportedException("IsValued and IsNotValued propertyName parameter must be a constant"); } expression.AppendFormat(".{0}", N1QlHelpers.EscapeIdentifier(constantExpression.Value.ToString())); } expression.Append(methodCallExpression.Method.Name == "IsValued" ? " IS VALUED" : " IS NOT VALUED"); return(methodCallExpression); }
public Expression Translate(MethodCallExpression methodCallExpression, N1QlExpressionTreeVisitor expressionTreeVisitor) { if (methodCallExpression == null) { throw new ArgumentNullException("methodCallExpression"); } if (methodCallExpression.Arguments[0] is ConstantExpression keyExpression) { var expression = expressionTreeVisitor.Expression; expressionTreeVisitor.Visit(methodCallExpression.Object); expression.Append('.'); expression.Append(N1QlHelpers.EscapeIdentifier(keyExpression.Value.ToString())); } else { throw new NotSupportedException("Dictionary keys must be constants"); } return(methodCallExpression); }
public void EscapeIdentifier_Null_ThrowsException() { Assert.Throws <ArgumentNullException>(() => N1QlHelpers.EscapeIdentifier(null)); }
public void EscapeIdentifier_WrapsSuccessfully(string identifier, string expectedResult) { var result = N1QlHelpers.EscapeIdentifier(identifier); Assert.AreEqual(expectedResult, result); }
public override void AppendToStringBuilder(StringBuilder sb) { var indexTypeStr = IndexType == N1QlIndexType.Gsi ? "GSI" : "VIEW"; sb.AppendFormat("INDEX ({0} USING {1})", N1QlHelpers.EscapeIdentifier(IndexName), indexTypeStr); }