in cmd/transform/transform.go [160:255]
func process(taskContext context.Context, db driver.Conn, config analyzer.DatabaseConfiguration, startTime time.Time, endTime time.Time, insertReportManager *analyzer.InsertReportManager, tableName string) error {
slog.Info("process", "start", startTime, "end", endTime)
// don't forget to update order clause if differs - better to insert data in an expected order
var err error
var rows driver.Rows
if config.HasProductField {
rows, err = db.Query(taskContext, `
select product, machine, branch,
generated_time, build_time, raw_report,
tc_build_id, tc_installer_build_id,
build_c1, build_c2, build_c3, project
from report
where generated_time >= $1 and generated_time < $2
order by product, machine, branch, project, build_c1, build_c2, build_c3, build_time, generated_time
`, startTime, endTime)
} else {
buildFields := ""
if config.HasInstallerField {
buildFields = "build_c1, build_c2, build_c3,"
}
installerFields := ""
if config.HasInstallerField {
installerFields = "tc_installer_build_id, " + buildFields
}
rows, err = db.Query(taskContext, `
select machine, branch,
generated_time, build_time, tc_build_id,`+installerFields+` project, measures.name, measures.value, measures.type, triggeredBy
from `+tableName+`
where generated_time >= $1 and generated_time < $2
order by machine, branch, project, `+buildFields+` build_time, generated_time
`, startTime, endTime)
}
if err != nil {
return fmt.Errorf("cannot query: %w", err)
}
defer util.Close(rows)
var row ReportRow
for rows.Next() {
err = rows.ScanStruct(&row)
if err != nil {
return fmt.Errorf("cannot scan: %w", err)
}
runResult := &analyzer.RunResult{
Machine: row.Machine,
GeneratedTime: row.GeneratedTime,
BuildTime: row.BuildTime,
TcBuildId: int(row.TcBuildId),
}
if config.HasInstallerField {
runResult.TcInstallerBuildId = int(row.TcInstallerBuildId)
runResult.BuildC1 = int(row.BuildC1)
runResult.BuildC2 = int(row.BuildC2)
runResult.BuildC3 = int(row.BuildC3)
}
if config.HasRawReport {
err = analyzer.ReadReport(runResult, config)
if err != nil {
return err
}
if runResult.Report == nil {
// ignore report
continue
}
}
if config.DbName == "perfint" || config.DbName == "perfintDev" {
runResult.Report = &model.Report{
Project: row.Project,
BuildDate: row.BuildTime.Format("20060102T150405+0000"),
Generated: row.GeneratedTime.Format("20060102T150405+0000"),
}
runResult.ExtraFieldData = []any{row.MeasuresName, row.MeasuresValue, row.MeasuresType, row.Mode}
runResult.TriggeredBy = row.TriggeredBy
runResult.TcBuildType = row.TcBuildType
}
err = insertReportManager.WriteMetrics(row.Product, runResult, row.Branch, row.Project, slog.Default())
if err != nil {
return err
}
}
err = rows.Err()
if err != nil {
return fmt.Errorf("cannot scan: %w", err)
}
return nil
}