Esempio n. 1
0
        public void Test_3()
        {
            var parameters = new List <string>();
            var condition  = new InCondition("a", parameters);

            Assert.Null(condition.GetCondition());
        }
Esempio n. 2
0
        public void Test_5()
        {
            var parameters = new List <string> {
                "b", "c"
            };
            var condition = new InCondition("", parameters);

            Assert.Null(condition.GetCondition());
        }
Esempio n. 3
0
        public void Test_2()
        {
            var parameters = new List <string> {
                "b", "c"
            };
            var condition = new InCondition("a", parameters);

            Assert.Equal("a In (b,c)", condition.GetCondition());
        }
Esempio n. 4
0
    public void ToStringTest(string expectedExpr, string operandExpr, params string[] valuesExpr)
    {
        var operand   = new FakeToStringCondition(operandExpr);
        var valueList = valuesExpr.Select(i => new FakeToStringCondition(i)).ToList();

        var sut    = new InCondition(operand, valueList);
        var actual = sut.ToString();

        actual.Should().Be(expectedExpr);
    }
Esempio n. 5
0
 protected virtual string CompileCondition(WhereCondition condition, SqlCompilerContext context)
 {
     return(condition switch
     {
         CompareColumnsCondition compareColumnsCondition => CompileCondition(compareColumnsCondition, context),
         CompareCondition compareCondition => CompileCondition(compareCondition, context),
         InCondition inCondition => CompileCondition(inCondition, context),
         NestedCondition nestedCondition => CompileCondition(nestedCondition, context),
         RawCondition rawCondition => CompileCondition(rawCondition, context),
         _ => throw new ArgumentOutOfRangeException(nameof(condition))
     });
Esempio n. 6
0
        /// <summary>
        /// IN条件解析
        /// </summary>
        /// <param name="condition">需要解析的条件对象</param>
        /// <returns>返回解析后的条件字符串</returns>
        protected override string InParse(InCondition condition)
        {
            StringBuilder conditionStr = new StringBuilder(" ");
            string        queryColName = condition.SearchColumn.CurrentSearcher.TableName + "." + condition.SearchColumn.ColumnName;

            if (string.IsNullOrEmpty(condition.SearchColumn.ConditionString))
            {
                conditionStr.Append(queryColName);
            }
            else
            {
                conditionStr.Append(condition.SearchColumn.ConditionString.Replace(SQLPlaceholder.ColName, queryColName));
            }

            conditionStr.Append(" IN ( ");

            string paramName = string.Empty;
            int    i         = 0;

            foreach (object pvalue in condition.ParamValueList)
            {
                if (i != 0)
                {
                    conditionStr.Append(",");
                }

                if (pvalue is SearchColumn)
                {
                    SearchColumn tmpColumn    = (SearchColumn)pvalue;
                    string       valueColName = tmpColumn.CurrentSearcher.TableName + "." + tmpColumn.ColumnName;
                    conditionStr.Append(valueColName);
                }
                else
                {
                    if (!string.IsNullOrEmpty(pvalue.ToString()))
                    {
                        paramName = "P" + Guid.NewGuid().ToString().ToLower().Replace("-", "");
                        conditionStr.Append("@" + paramName);

                        ParamCollection.Add(new MySqlParameter(paramName, pvalue));
                    }
                    else
                    {
                        conditionStr.Append("''");
                    }
                }

                i++;
            }

            conditionStr.Append(") ");

            return(conditionStr.ToString());
        }
        protected virtual string CompileInCondition <T>(SqlResult ctx, InCondition <T> item)
        {
            if (!item.Values.Any())
            {
                return(item.IsNot ? "1 = 1" : "1 = 0");
            }

            var inOperator = item.IsNot ? "NOT IN" : "IN";

            var values = Parameterize(ctx, item.Values);

            return(Wrap(item.Column) + $" {inOperator} ({values})");
        }
        protected virtual string CompileInCondition <T>(SqlResult ctx, InCondition <T> item)
        {
            var column = Wrap(item.Column);

            if (!item.Values.Any())
            {
                return(item.IsNot ? $"1 = 1 /* WhereNotIn({column}, [empty list]) */" : "1 = 0 /* WhereIn({column}, [empty list]) */");
            }

            var inOperator = item.IsNot ? "NOT IN" : "IN";

            var values = Parameterize(ctx, item.Values);

            return(column + $" {inOperator} ({values})");
        }
Esempio n. 9
0
        protected virtual string CompileInCondition <T>(SqlResult context, InCondition <T> item)
        {
            string column = wrapper.Wrap(item.Column);

            if (!item.Values.Any())
            {
                return(item.IsNot ? $"1 = 1 /* NOT IN [empty list] */" : "1 = 0 /* IN [empty list] */");
            }

            string inOperator = item.IsNot ? "NOT IN" : "IN";

            string values = Parameterize(context, item.Values);

            return(column + $" {inOperator} ({values})");
        }
Esempio n. 10
0
    public void Evaluate(bool expectedResult, object operandValue, params object[] keywordValues)
    {
        var variables = A.Dummy <IVariableDictionary>();

        var operand = A.Fake <IConditionKeyword>(i => i.Strict());

        A.CallTo(() => operand.Evaluate(variables)).Returns(operandValue);

        var valueList = new List <IConditionKeyword>();

        foreach (var value in keywordValues)
        {
            var item = A.Fake <IConditionKeyword>(i => i.Strict());
            A.CallTo(() => item.Evaluate(variables)).Returns(value);
            valueList.Add(item);
        }

        var sut    = new InCondition(operand, valueList);
        var actual = sut.Evaluate(variables);

        actual.Should().Be(expectedResult);
    }
Esempio n. 11
0
        /// <summary>
        /// IN条件解析
        /// </summary>
        /// <param name="condition">需要解析的条件对象</param>
        /// <returns>返回解析后的条件字符串</returns>
        protected override string InParse(InCondition condition)
        {
            StringBuilder conditionStr = new StringBuilder(" ");
            string queryColName = condition.SearchColumn.CurrentSearcher.TableName + "." + condition.SearchColumn.ColumnName;

            if (string.IsNullOrEmpty(condition.SearchColumn.ConditionString))
            {
                conditionStr.Append(queryColName);
            }
            else
            {
                conditionStr.Append(condition.SearchColumn.ConditionString.Replace(SQLPlaceholder.ColName, queryColName));
            }

            conditionStr.Append(" IN ( ");

            string paramName = string.Empty;
            int i = 0;

            foreach (object pvalue in condition.ParamValueList)
            {
                if (i != 0)
                {
                    conditionStr.Append(",");
                }

                if (pvalue is SearchColumn)
                {
                    SearchColumn tmpColumn = (SearchColumn)pvalue;
                    string valueColName = tmpColumn.CurrentSearcher.TableName + "." + tmpColumn.ColumnName;
                    conditionStr.Append(valueColName);
                }
                else
                {
                    if (!string.IsNullOrEmpty(pvalue.ToString()))
                    {
                        paramName = "P" + Guid.NewGuid().ToString().ToLower().Replace("-", "");
                        conditionStr.Append(":" + paramName);

                        ParamCollection.Add(new DBParam(paramName, pvalue));
                    }
                    else
                    {
                        conditionStr.Append("''");
                    }
                }

                i++;
            }

            conditionStr.Append(") ");

            return conditionStr.ToString();
        }
Esempio n. 12
0
 /// <summary>
 /// 包含集合条件
 /// </summary>
 /// <param name="relation">条件关系</param>
 /// <param name="column">查询字段对象</param>
 /// <param name="paramValueList">比较的值列表</param>
 /// <returns>返回集合条件对象</returns>
 public static InCondition In(ConditionRelation relation, SearchColumn column, object[] paramValueList)
 {
     InCondition cond = new InCondition(relation, column, paramValueList);
     return cond;
 }
Esempio n. 13
0
 /// <summary>
 /// 包含集合条件
 /// </summary>
 /// <param name="paramValueList">比较的值列表</param>
 /// <returns>返回集合条件对象</returns>
 public static InCondition In(object[] paramValueList)
 {
     InCondition cond = new InCondition(paramValueList);
     return cond;
 }
Esempio n. 14
0
        public void Test_4()
        {
            var condition = new InCondition("a", null);

            Assert.Null(condition.GetCondition());
        }
Esempio n. 15
0
        /// <summary>
        /// 包含集合条件
        /// </summary>
        /// <param name="relation">条件关系</param>
        /// <param name="column">查询字段对象</param>
        /// <param name="paramValueList">比较的值列表</param>
        /// <returns>返回集合条件对象</returns>
        public static InCondition In(ConditionRelation relation, SearchColumn column, object[] paramValueList)
        {
            InCondition cond = new InCondition(relation, column, paramValueList);

            return(cond);
        }
Esempio n. 16
0
        /// <summary>
        /// 包含集合条件
        /// </summary>
        /// <param name="paramValueList">比较的值列表</param>
        /// <returns>返回集合条件对象</returns>
        public static InCondition In(object[] paramValueList)
        {
            InCondition cond = new InCondition(paramValueList);

            return(cond);
        }