示例#1
0
        private IComparable GetValue(ParameterMarkerExpressionSegment expressionSegment, ParameterContext parameterContext)
        {
            object result = parameterContext.GetParameterValue(expressionSegment.GetParameterName());

            ShardingAssert.Else(result is IComparable, "Sharding value must implements IComparable.");
            return((IComparable)result);
        }
        private IComparable GetRouteValue(ISimpleExpressionSegment expressionSegment, ParameterContext parameterContext)
        {
            object result;

            if (expressionSegment is ParameterMarkerExpressionSegment parameterMarkerExpressionSegment)
            {
                result = parameterContext.GetParameterValue(parameterMarkerExpressionSegment.GetParameterName());
            }
            else
            {
                result = ((LiteralExpressionSegment)expressionSegment).GetLiterals();
            }

            ShardingAssert.Else(result is IComparable, "Sharding value must implements IComparable.");
            return((IComparable)result);
        }
        private object GetShardingColumnSetAssignmentValue(AssignmentSegment assignmentSegment, ParameterContext parameterContext)
        {
            var segment = assignmentSegment.GetValue();

            if (segment is ParameterMarkerExpressionSegment parameterMarkerExpressionSegment)
            {
                return(parameterContext.GetParameterValue(parameterMarkerExpressionSegment.GetParameterName()));
            }
            if (segment is LiteralExpressionSegment literalExpressionSegment)
            {
                return(literalExpressionSegment.GetLiterals());
            }
            // if (-1 == shardingValueParameterMarkerIndex || shardingValueParameterMarkerIndex > parameters.Count - 1)
            // {
            //     return null;
            // }
            return(null);
        }
 private object GetPredicateCompareShardingValue(IExpressionSegment segment, ParameterContext parameterContext)
 {
     // int shardingValueParameterMarkerIndex;
     if (segment is ParameterMarkerExpressionSegment parameterMarkerExpressionSegment)
     {
         // shardingValueParameterMarkerIndex = parameterMarkerExpressionSegment.GetParameterMarkerIndex();
         // if (-1 == shardingValueParameterMarkerIndex || shardingValueParameterMarkerIndex > parameters.Count - 1)
         // {
         //     return null;
         // }
         return(parameterContext.GetParameterValue(parameterMarkerExpressionSegment.GetParameterName()));
     }
     if (segment is LiteralExpressionSegment literalExpressionSegment)
     {
         return(literalExpressionSegment.GetLiterals());
     }
     return(null);
 }
 private object GetPredicateInShardingValue(ICollection <IExpressionSegment> segments, ParameterContext parameterContext)
 {
     // int shardingColumnWhereIndex;
     foreach (var segment in segments)
     {
         if (segment is ParameterMarkerExpressionSegment parameterMarkerExpressionSegment)
         {
             // shardingColumnWhereIndex = parameterMarkerExpressionSegment.GetParameterMarkerIndex();
             // if (-1 == shardingColumnWhereIndex || shardingColumnWhereIndex > parameters.Count - 1)
             // {
             //     continue;
             // }
             return(parameterContext.GetParameterValue(parameterMarkerExpressionSegment.GetParameterName()));
         }
         if (segment is LiteralExpressionSegment literalExpressionSegment)
         {
             return(literalExpressionSegment.GetLiterals());
         }
     }
     return(null);
 }
示例#6
0
        /**
         * Get value.
         *
         * @param index index
         * @return value
         */
        public object GetValue(int index)
        {
            IExpressionSegment valueExpression = _valueExpressions[index];

            return(valueExpression is ParameterMarkerExpressionSegment parameterMarkerExpression?_parameterContext.GetParameterValue(parameterMarkerExpression.GetParameterName()) : ((LiteralExpressionSegment)valueExpression).GetLiterals());
        }