public void QueryConditionWithDateTimeTests( QueryConditionType conditionType, string expectedConditionStringFormat) { var columnToCheck = "DateOfBirth"; var expectedValue = new DateTime(2000, 1, 1); var condition = new QueryConditionBuilder() .DeclareCondition(columnToCheck, conditionType, expectedValue) .Build(); var actualConditionStringBuilder = new StringBuilder(); var actualQueryParameters = new List <QueryParameter>(); condition.AppendTo(actualConditionStringBuilder, actualQueryParameters); string expectedQueryParameterName = $"{columnToCheck}0"; string expectedConditionString = string.Format(expectedConditionStringFormat, expectedQueryParameterName); Assert.Equal(expectedConditionString, actualConditionStringBuilder.ToString()); Assert.Single(actualQueryParameters); var actualQueryParam = actualQueryParameters.First(); Assert.Equal(expectedQueryParameterName, actualQueryParam.ParameterName); Assert.Equal(expectedValue.ToString("s"), actualQueryParam.Value); }
public void QueryConditionWithDifferentTypesTests( string columnToCheck, QueryConditionType conditionType, object expectedValue, string expectedConditionStringFormat) { var condition = new QueryConditionBuilder() .DeclareCondition(columnToCheck, conditionType, expectedValue) .Build(); var actualConditionStringBuilder = new StringBuilder(); var actualQueryParameters = new List <QueryParameter>(); condition.AppendTo(actualConditionStringBuilder, actualQueryParameters); string expectedQueryParameterName = $"{columnToCheck}0"; string expectedConditionString = string.Format(expectedConditionStringFormat, expectedQueryParameterName); Assert.Equal(expectedConditionString, actualConditionStringBuilder.ToString()); Assert.Single(actualQueryParameters); var actualQueryParam = actualQueryParameters.First(); Assert.Equal(expectedQueryParameterName, actualQueryParam.ParameterName); Assert.Equal(expectedValue, actualQueryParam.Value); }
/// <summary> /// Declares a new <see cref="QueryCondition"/> with the passed parameters. /// This is only possible, if <see cref="DeclareCondition(string, QueryConditionType, object)"/> or /// <see cref="DeclareConditionNode(QueryConditionNodeType, Func{QueryConditionBuilder}, Func{QueryConditionBuilder})"/> /// have not yet been called. /// </summary> /// <param name="columnToCheck">the column to check against</param> /// <param name="conditionType">how should the column be compared against the compareValue</param> /// <param name="compareValue">the value used for comparing with the value in the column</param> /// <returns>a reference of itself</returns> public QueryConditionBuilder DeclareCondition( string columnToCheck, QueryConditionType conditionType, object compareValue) { if (this.QueryCondition != null) { throw new InvalidOperationException("Can't declare more than 1 condition on this layer"); } else if (string.IsNullOrEmpty(columnToCheck)) { throw new ArgumentNullException(nameof(columnToCheck)); } else if (compareValue == null) { throw new ArgumentNullException(nameof(compareValue)); } this.QueryCondition = new QueryCondition() { ColumnToCheck = columnToCheck, CompareValue = compareValue, ConditionType = conditionType }; return(this); }
/// <summary> /// Adds when condition to case statement of select. /// </summary> /// <param name="queryCase">Case statement of select.</param> /// <param name="sourceTableAlias">Alias of table in left expression.</param> /// <param name="sourceColumnAlias">Alias of column in left expression.</param> /// <param name="conditionType">Type of comparison condition.</param> /// <param name="rightExpressionValue">Value of right expression.</param> /// <param name="thenValue">Value that is returned in then statement.</param> public static void AddWhenCondition(QueryCase queryCase, string sourceTableAlias, string sourceColumnAlias, QueryConditionType conditionType, object rightExpressionValue, object thenValue) { var whenCondition = new QueryCondition(conditionType) { LeftExpression = new QueryColumnExpression(sourceTableAlias, sourceColumnAlias) }; whenCondition.RightExpressions.Add(Column.Const(rightExpressionValue)); queryCase.AddWhenItem(whenCondition, Column.Parameter(thenValue)); }
public ConditionParam(QueryConditionType type, object value, bool isUse) { _conditionType = type; _value = value; _isUse = isUse; }