private ICollection <string> DoSharding(ICollection <string> availableTargetNames, ListRouteValue shardingValue)
        {
            ICollection <string> result = new LinkedList <string>();

            foreach (var value in shardingValue.GetValues())
            {
                string target = preciseShardingAlgorithm.DoSharding(availableTargetNames, new PreciseShardingValue(shardingValue.GetTableName(), shardingValue.GetColumnName(), value));
                if (null != target)
                {
                    result.Add(target);
                }
            }
            return(result);
        }
Esempio n. 2
0
 private bool IsSameLogicTable(ShardingRule shardingRule, ListRouteValue shardingValue1, ListRouteValue shardingValue2)
 {
     return(shardingValue1.GetTableName().Equals(shardingValue2.GetTableName()) || IsBindingTable(shardingRule, shardingValue1, shardingValue2));
 }
Esempio n. 3
0
        private bool IsBindingTable(ShardingRule shardingRule, ListRouteValue shardingValue1, ListRouteValue shardingValue2)
        {
            var bindingRule = shardingRule.FindBindingTableRule(shardingValue1.GetTableName());

            return(bindingRule != null && bindingRule.HasLogicTable(shardingValue2.GetTableName()));
        }
Esempio n. 4
0
 private bool IsSameRouteValue(ShardingRule shardingRule, ListRouteValue routeValue1, ListRouteValue routeValue2)
 {
     return(IsSameLogicTable(shardingRule, routeValue1, routeValue2) && routeValue1.GetColumnName().Equals(routeValue2.GetColumnName()) && routeValue1.GetValues().SequenceEqual(routeValue2.GetValues()));
 }