in internal/oraclemetrics/oraclemetrics.go [491:524]
func createGaugeMetric(c *configpb.Column, val any, labels map[string]string, opts queryOptions, timestamp *tspb.Timestamp) (*mrpb.TimeSeries, bool) {
metricPath := metricURL + "/" + opts.query.GetName() + "/" + c.GetName()
if c.GetNameOverride() != "" {
metricPath = metricURL + "/" + c.GetNameOverride()
}
ts := timeseries.Params{
CloudProp: convertCloudProperties(opts.collector.Config.GetCloudProperties()),
MetricType: metricPath,
MetricLabels: labels,
Timestamp: timestamp,
}
// Type asserting to pointers due to the coupling with sql.Rows.Scan() populating the columns as such.
switch c.GetValueType() {
case configpb.ValueType_VALUE_INT64:
if result, ok := val.(*int64); ok {
ts.Int64Value = *result
}
return timeseries.BuildInt(ts), true
case configpb.ValueType_VALUE_DOUBLE:
if result, ok := val.(*float64); ok {
ts.Float64Value = *result
}
return timeseries.BuildFloat64(ts), true
case configpb.ValueType_VALUE_BOOL:
if result, ok := val.(*bool); ok {
ts.BoolValue = *result
}
return timeseries.BuildBool(ts), true
default:
return nil, false
}
}