func createMetricsForRow()

in internal/oraclemetrics/oraclemetrics.go [397:421]


func createMetricsForRow(ctx context.Context, opts queryOptions, cols []any, defaultLabels map[string]string) []*mrpb.TimeSeries {
	labels := createLabels(opts.query, cols)

	// Merge defaultLabels into labels, overwriting existing values.
	maps.Copy(labels, defaultLabels)

	var metrics []*mrpb.TimeSeries
	for i, c := range opts.query.GetColumns() {
		switch c.GetMetricType() {
		case configpb.MetricType_METRIC_GAUGE:
			if metric, ok := createGaugeMetric(c, cols[i], labels, opts, tspb.Now()); ok {
				metrics = append(metrics, metric)
			}
		case configpb.MetricType_METRIC_CUMULATIVE:
			if metric, ok := createCumulativeMetric(ctx, c, cols[i], labels, opts, tspb.Now()); ok {
				metrics = append(metrics, metric)
			}
		case configpb.MetricType_METRIC_LABEL:
			// Labels are handled by createLabels()
		default:
			log.CtxLogger(ctx).Warnw("Unsupported metric type", "metric_type", c.GetMetricType())
		}
	}
	return metrics
}