modelRT/model/measurement_attribute.go

56 lines
1.3 KiB
Go
Raw Permalink Normal View History

package model
import (
"fmt"
"modelRT/constants"
)
// MeasurementTypeString converts measurement.type from PostgreSQL to the
// electric-element type stored in the Redis data-object hash.
func MeasurementTypeString(measurementType int16) (string, error) {
switch measurementType {
case constants.MeasurementTypeTelemetry:
return "TM", nil
case constants.MeasurementTypeTelesignal:
return "TS", nil
case constants.MeasurementTypeTelecommand:
return "TC", nil
case constants.MeasurementTypeTeleadjusting:
return "TA", nil
case constants.MeasurementTypeSetpoint:
return "SP", nil
default:
return "", fmt.Errorf("unsupported measurement type %d", measurementType)
}
}
func integerJSONValue(value any) (int, error) {
switch typed := value.(type) {
case int:
return typed, nil
case int8:
return int(typed), nil
case int16:
return int(typed), nil
case int32:
return int(typed), nil
case int64:
return int(typed), nil
case float32:
converted := int(typed)
if typed != float32(converted) {
return 0, fmt.Errorf("expected integer, got %v", typed)
}
return converted, nil
case float64:
converted := int(typed)
if typed != float64(converted) {
return 0, fmt.Errorf("expected integer, got %v", typed)
}
return converted, nil
default:
return 0, fmt.Errorf("expected integer, got %T", value)
}
}