private AbstractDataSource GetDataSource(AbstractRequestContext context) { var sourceChoice = context.DataSourceChoice; var database = context.ExecutionContext.SmartSqlConfig.Database; AbstractDataSource choiceDataSource = database.Write; var readDataSources = database.Reads; if (sourceChoice != DataSourceChoice.Read || readDataSources == null || readDataSources.Count <= 0) { return(choiceDataSource); } if (!string.IsNullOrEmpty(context.ReadDb)) { if (!readDataSources.TryGetValue(context.ReadDb, out var readDataSource)) { throw new SmartSqlException($"Can not find ReadDb:{context.ReadDb} ."); } choiceDataSource = readDataSource; } else { var seekList = readDataSources.Values.Select(readDataSource => new WeightFilter <AbstractDataSource> .WeightSource { Source = readDataSource, Weight = readDataSource.Weight }); choiceDataSource = _weightFilter.Elect(seekList).Source; } if (_logger.IsEnabled(LogLevel.Debug)) { _logger.LogDebug($"DataSourceFilter GetDataSource Choice: {choiceDataSource.Name} ."); } return(choiceDataSource); }
private IDataSource GetDataSource(RequestContext context) { var sourceChoice = context.DataSourceChoice; IDataSource choiceDataSource = _smartSqlContext.Database.WriteDataSource; var readDataSources = _smartSqlContext.Database.ReadDataSources; if (sourceChoice == DataSourceChoice.Read && readDataSources != null && readDataSources.Count > 0 ) { if (!String.IsNullOrEmpty(context.ReadDb)) { choiceDataSource = readDataSources.FirstOrDefault(readDb => readDb.Name == context.ReadDb); if (choiceDataSource == null) { throw new SmartSqlException($"Statement.Key:{context.StatementKey},can not find ReadDb:{context.ReadDb} ."); } } else { var seekList = readDataSources.Select(readDataSource => new WeightFilter <IReadDataSource> .WeightSource { Source = readDataSource, Weight = readDataSource.Weight }); choiceDataSource = _weightFilter.Elect(seekList).Source; } } if (_logger.IsEnabled(LogLevel.Debug)) { _logger.LogDebug($"DataSourceFilter GetDataSource Choice: {choiceDataSource.Name} ."); } return(choiceDataSource); }
public void Elect() { var readDataSources = Enumerable.Range(1, 100).Select(m => new ReadDataSource { Name = m.ToString(), Weight = m }); var inWeightSources = readDataSources.Select(readDataSource => new WeightFilter <ReadDataSource> .WeightSource { Source = readDataSource, Weight = readDataSource.Weight }); WeightFilter <ReadDataSource> weightFilter = new WeightFilter <ReadDataSource>(); var choiced = weightFilter.Elect(inWeightSources); }
public IDataSource GetDataSource(DataSourceChoice sourceChoice) { IDataSource choiceDataSource = SmartSqlMapper.SqlMapConfig.Database.WriteDataSource; var readDataSources = SmartSqlMapper.SqlMapConfig.Database.ReadDataSources; if (sourceChoice == DataSourceChoice.Read && readDataSources.Count > 0 ) { var seekList = readDataSources.Select(readDataSource => new WeightFilter <IReadDataSource> .WeightSource { Source = readDataSource, Weight = readDataSource.Weight }); choiceDataSource = weightFilter.Elect(seekList).Source; } _logger.LogDebug($"DataSourceManager GetDataSource Choice: {choiceDataSource.Name} ."); return(choiceDataSource); }
private IDataSource FindDefault(RequestContext context) { var database = context.SmartSqlContext.Database; IDataSource dataSource = default; if (context.DataSourceChoice == DataSourceChoice.Write) { dataSource = database.WriteDataSource; } else if (database.ReadDataSources != null) { var seekList = database.ReadDataSources.Select(readDataSource => new WeightFilter <IReadDataSource> .WeightSource { Source = readDataSource, Weight = readDataSource.Weight }); dataSource = _weightFilter.Elect(seekList).Source; } return(dataSource); }
private AbstractDataSource FindDefault(AbstractRequestContext context) { var database = context.ExecutionContext.SmartSqlConfig.Database; AbstractDataSource dataSource = null; if (context.DataSourceChoice == DataSourceChoice.Write) { dataSource = database.Write; } else if (database.Reads != null) { var seekList = database.Reads.Select(readDataSource => new WeightFilter <ReadDataSource> .WeightSource { Source = readDataSource.Value, Weight = readDataSource.Value.Weight }); dataSource = _weightFilter.Elect(seekList).Source; } return(dataSource); }
public IDataSource GetDataSource(DataSourceType type) { var ReadDataSources = BaraMapper.BaraMapConfig.DataBase.ReadDataSources; IDataSource ChosedDataBase; if (ReadDataSources.Count > 0) { var seekList = ReadDataSources.Select(DataSource => new WeightFilter <IDataSource> .WeightSource { Source = DataSource, Weight = DataSource.Weight }); ChosedDataBase = WeightFilter.Elect(seekList).Source; } else { ChosedDataBase = BaraMapper.BaraMapConfig.DataBase.WriteDataBase; } _logger.LogDebug($"DataSourceManager GetDataSource Choice: {ChosedDataBase.Name} ."); return(ChosedDataBase); }
private IDataSource GetDataSource(DataSourceChoice sourceChoice) { IDataSource choiceDataSource = _smartSqlContext.Database.WriteDataSource; var readDataSources = _smartSqlContext.Database.ReadDataSources; if (sourceChoice == DataSourceChoice.Read && readDataSources.Count > 0 ) { var seekList = readDataSources.Select(readDataSource => new WeightFilter <IReadDataSource> .WeightSource { Source = readDataSource, Weight = readDataSource.Weight }); choiceDataSource = _weightFilter.Elect(seekList).Source; } if (_logger.IsEnabled(LogLevel.Debug)) { _logger.LogDebug($"DataSourceManager GetDataSource Choice: {choiceDataSource.Name} ."); } return(choiceDataSource); }