Exemplo n.º 1
0
        public void ToSqlRuleContainsifCond()
        {
            string[] nombres = null;


            Expression <Func <Cliente, bool> > selectBody = x => SqlExpr.IfCond.Invoke(nombres.Any(), nombres.Contains(x.Nombre));
            var pars = new SqlExprParams(selectBody.Parameters[0], null, false, "cli", new SqlFromList.ExprStrRawSql[0], ParamMode.None, new SqlParamDic());

            var visitor = new SqlRewriteVisitor(pars);

            {
                nombres = new[] { "rafa", "hola" };
                var ret     = visitor.Visit(selectBody);
                var rawBody = ((MethodCallExpression)((LambdaExpression)ret).Body).Arguments[0];
                ExprEval.TryEvalExpr <string>(rawBody, out var rawStr);
                var expected = "(\"cli\".\"Nombre\" IN ('rafa', 'hola'))";
                Assert.AreEqual(expected, rawStr);
            }

            {
                nombres = new string[0];

                var ret     = visitor.Visit(selectBody);
                var rawBody = ((MethodCallExpression)((LambdaExpression)ret).Body).Arguments[0];
                ExprEval.TryEvalExpr <string>(rawBody, out var rawStr);
                var expected = "True";
                Assert.AreEqual(expected, rawStr);
            }
        }
Exemplo n.º 2
0
        public void ToSqlRule3()
        {
            Expression <Func <Cliente, bool> > selectBody = x => x.Nombre.Contains("Hola");

            var pars = new SqlExprParams(selectBody.Parameters[0], null, false, "cli", new SqlFromList.ExprStrRawSql[0], ParamMode.None, new SqlParamDic());

            var rules =
                SqlFunctions.rawAtom.Concat(
                    SqlFunctions.ExprParamsRules(pars)
                    )
                .Concat(new[] {
                DefaultRewrite.StringFormat
            })
                .Concat(SqlFunctions.stringCalls)
                .Concat(SqlFunctions.AtomRawRule(pars))
                .ToList();

            var ret     = ApplyRules(selectBody, rules);
            var rawBody = ((MethodCallExpression)((LambdaExpression)ret).Body).Arguments[0];

            ExprEval.TryEvalExpr <string>(rawBody, out var rawStr);
            var expected = "(\"cli\".\"Nombre\" LIKE '%' || 'Hola' || '%')";

            Assert.AreEqual(expected, rawStr);
        }
Exemplo n.º 3
0
        public void ToSqlRuleContains()
        {
            var nombres = new[] { "rafa", "hola" };
            Expression <Func <Cliente, string[]> > selectBody = x => Sql.Record(nombres);

            var pars = new SqlExprParams(selectBody.Parameters[0], null, false, "cli", new SqlFromList.ExprStrRawSql[0], ParamMode.None, new SqlParamDic());

            var rules =
                SqlFunctions.AtomRawRule(pars)
                .Concat(
                    SqlFunctions.ExprParamsRules(pars)
                    )
                .Concat(new[] {
                DefaultRewrite.StringFormat
            })
                .Concat(SqlFunctions.stringCalls)
                .Concat(SqlFunctions.sqlCalls)
                .Concat(SqlFunctions.rawAtom)
                .ToList();

            var ret     = ApplyRules(selectBody, rules);
            var rawBody = ((MethodCallExpression)((LambdaExpression)ret).Body).Arguments[0];

            ExprEval.TryEvalExpr <string>(rawBody, out var rawStr);
            var expected = "('rafa', 'hola')";

            Assert.AreEqual(expected, rawStr);
        }
Exemplo n.º 4
0
        public void ToSqlStringConcat()
        {
            Expression <Func <Uruz.Factura, string> > nombreFactura = x => x.Serie + "-" + x.Folio;
            Expression <Func <Uruz.Factura, string> > selectBody    = x => nombreFactura.Invoke(x);

            var pars = new SqlExprParams(selectBody.Parameters[0], null, false, "cli", new SqlFromList.ExprStrRawSql[0], ParamMode.None, new SqlParamDic());



            var visitor = new SqlRewriteVisitor(pars);
            var ret     = visitor.Visit(selectBody);
            var rawBody = ((MethodCallExpression)((LambdaExpression)ret).Body).Arguments[0];

            ExprEval.TryEvalExpr <string>(rawBody, out var rawStr);
            var expected = @"((""cli"".""Serie"" || '-') || ""cli"".""Folio"")";

            Assert.AreEqual(expected, rawStr);
        }
Exemplo n.º 5
0
        public void ToSqlRuleContainsEmpty()
        {
            var nombres = new string[0];

            Expression <Func <Cliente, bool> > selectBody = x => nombres.Contains(x.Nombre);
            var pars = new SqlExprParams(selectBody.Parameters[0], null, false, "cli", new SqlFromList.ExprStrRawSql[0], ParamMode.None, new SqlParamDic());

            var visitor = new SqlRewriteVisitor(pars);

            {
                nombres = new string[0];

                var ret     = visitor.Visit(selectBody);
                var rawBody = ((MethodCallExpression)((LambdaExpression)ret).Body).Arguments[0];
                ExprEval.TryEvalExpr <string>(rawBody, out var rawStr);
                var expected = "False";
                Assert.AreEqual(expected, rawStr);
            }
        }