func process()

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
}