public async Task <IEnumerable <BuildInfo> > GetBuildsInfo(CommitsRange commitsRange) { string connectionString = this.appConfiguration.ImportDatabaseConnectionString; var tableName = this.appConfiguration.ImportBuildStatusTableName; var projectName = this.appConfiguration.ImportProjectName; using (MySqlConnection conn = new MySqlConnection(connectionString)) { conn.Open(); StringBuilder sql = new StringBuilder(@"SELECT git_trigger_commit, gh_project_name, tr_status, gh_pushed_at "); sql.AppendLine($"FROM {tableName} WHERE gh_project_name = '{projectName}' AND gh_pushed_at IS NOT NULL"); if (!string.IsNullOrEmpty(commitsRange?.CommitFrom)) { sql.AppendLine($"AND tr_build_id >= (SELECT tr_build_id FROM {tableName} WHERE git_trigger_commit=:COMMIT_FROM)"); } if (!string.IsNullOrEmpty(commitsRange?.CommitTo)) { sql.AppendLine($"AND tr_build_id <= (SELECT tr_build_id FROM {tableName} WHERE git_trigger_commit=:COMMIT_TO) "); } sql.AppendLine("ORDER BY tr_build_id DESC "); MySqlCommand cmd = new MySqlCommand(sql.ToString(), conn); if (!string.IsNullOrEmpty(commitsRange?.CommitFrom)) { cmd.Parameters.Add(new MySqlParameter("COMMIT_FROM", MySqlDbType.Text) { Value = commitsRange.CommitFrom }); } if (!string.IsNullOrEmpty(commitsRange?.CommitTo)) { cmd.Parameters.Add(new MySqlParameter("COMMIT_TO", MySqlDbType.Text) { Value = commitsRange.CommitTo }); } using (var rdr = await cmd.ExecuteReaderAsync()) { var infos = new List <BuildInfo>(); while (rdr.Read()) { infos.Add(ParseBuildInfo(rdr)); } return(infos); } } }
public async Task <IEnumerable <BuildInfo> > GetBuildsInfo(CommitsRange commitsRange) { using (var connection = await this.CreateConnection()) { using (var command = connection.CreateCommand()) { this.ConfigureCommand(command, commitsRange); using (var reader = await command.ExecuteReaderAsync()) { var infos = new List <BuildInfo>(); while (reader.Read()) { infos.Add(ParseBuildInfo(reader)); } return(infos); } } } }
private void ConfigureCommand(OracleCommand command, CommitsRange commitsRange) { var tableName = this.appConfiguration.ImportBuildStatusTableName; var builder = new StringBuilder(); builder.Append($@" SELECT CSID, NAME, STATE, DATE_ADDED FROM {tableName} WHERE 1=1 "); if (!string.IsNullOrEmpty(commitsRange?.CommitFrom)) { builder.AppendLine($"AND ID >= (SELECT ID FROM {tableName} WHERE CSID=:COMMIT_FROM)"); command.Parameters.Add(new OracleParameter("COMMIT_FROM", OracleDbType.Varchar2) { Value = commitsRange.CommitFrom }); } if (!string.IsNullOrEmpty(commitsRange?.CommitTo)) { builder.AppendLine($"AND ID <= (SELECT ID FROM {tableName} WHERE CSID=:COMMIT_TO) "); command.Parameters.Add(new OracleParameter("COMMIT_TO", OracleDbType.Varchar2) { Value = commitsRange.CommitTo }); } builder.AppendLine("ORDER BY ID DESC "); command.CommandText = builder.ToString(); }