func()

in pkg/analyzer/InsertReportManager.go [219:275]


func (t *InsertReportManager) WriteMetrics(product string, row *RunResult, branch string, providedProject string, logger *slog.Logger) error {
	batch, err := t.InsertManager.PrepareForAppend()
	if err != nil {
		return err
	}

	project := row.Report.Project
	if project == "" {
		project = providedProject
	} else if t.config.HasInstallerField {
		customName := projectIdToName[row.Report.Project]
		if customName != "" {
			project = customName
		}
	}

	args := make([]any, 0, t.nonMetricFieldCount+t.config.extraFieldCount)
	args = append(args, row.Machine, row.GeneratedTime, project, uint32(row.TcBuildId), branch, row.TcBuildType)

	if t.config.HasProductField {
		args = append(args, product)
	}
	if t.config.HasInstallerField {
		buildTimeUnix, err := getBuildTimeFromReport(row.Report)
		if err != nil {
			return err
		}

		if buildTimeUnix.IsZero() {
			buildTimeUnix = row.BuildTime
		}

		if strings.HasPrefix(row.Machine, "intellij-linux-hw-compile-hp-blade-") {
			return nil
		}
		args = append(args, buildTimeUnix, uint32(row.TcInstallerBuildId), uint8(row.BuildC1), uint16(row.BuildC2), uint16(row.BuildC3))
	}
	if t.config.HasBuildNumber {
		args = append(args, row.BuildNumber)
	}
	args = append(args, row.TriggeredBy)

	if t.config.DbName == "ij" || t.config.DbName == "ijDev" {
		err = ComputeIjMetrics(t.nonMetricFieldCount, row.Report, &args, logger)
		if err != nil {
			return err
		}
	}

	args = append(args, row.ExtraFieldData...)

	err = batch.Append(args...)
	if err != nil {
		return fmt.Errorf("cannot append: %w", err)
	}
	return nil
}