/** * Find data node by data source and logic table. * * @param dataSourceName data source name * @param logicTableName logic table name * @return data node */ public DataNode GetDataNode(string dataSourceName, string logicTableName) { TableRule tableRule = GetTableRule(logicTableName); return(tableRule.ActualDataNodes.FirstOrDefault(o => ShardingDataSourceNames.DataSourceNames.Contains(o.GetDataSourceName()) && o.GetDataSourceName().Equals(dataSourceName)) ?? throw new ShardingException( $"Cannot find actual data node for data source name: '{dataSourceName}' and logic table name: '{logicTableName}'")); }
/** * Find data node by logic table name. * * @param logicTableName logic table name * @return data node */ public DataNode GetDataNode(string logicTableName) { TableRule tableRule = GetTableRule(logicTableName); return(tableRule.ActualDataNodes[0]); }
/** * Get table sharding strategy. * * <p> * Use default table sharding strategy if not found. * </p> * * @param tableRule table rule * @return table sharding strategy */ public IShardingStrategy GetTableShardingStrategy(TableRule tableRule) { return(tableRule.TableShardingStrategy ?? DefaultTableShardingStrategy); }
private bool IsShardingColumn(TableRule tableRule, string columnName) { return(GetDatabaseShardingStrategy(tableRule).GetShardingColumns().Contains(columnName) || GetTableShardingStrategy(tableRule).GetShardingColumns().Contains(columnName)); }
/** * Get database sharding strategy. * * <p> * Use default database sharding strategy if not found. * </p> * * @param tableRule table rule * @return database sharding strategy */ public IShardingStrategy GetDatabaseShardingStrategy(TableRule tableRule) { return(tableRule.DatabaseShardingStrategy ?? DefaultDatabaseShardingStrategy); }