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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
 public void EscapeIdentifier_Null_ThrowsException()
 {
     Assert.Throws <ArgumentNullException>(() => N1QlHelpers.EscapeIdentifier(null));
 }
Exemplo n.º 4
0
        public void EscapeIdentifier_WrapsSuccessfully(string identifier, string expectedResult)
        {
            var result = N1QlHelpers.EscapeIdentifier(identifier);

            Assert.AreEqual(expectedResult, result);
        }
Exemplo n.º 5
0
        public override void AppendToStringBuilder(StringBuilder sb)
        {
            var indexTypeStr = IndexType == N1QlIndexType.Gsi ? "GSI" : "VIEW";

            sb.AppendFormat("INDEX ({0} USING {1})", N1QlHelpers.EscapeIdentifier(IndexName), indexTypeStr);
        }