50 lines
1.0 KiB
Go
50 lines
1.0 KiB
Go
package state
|
|
|
|
import (
|
|
"fmt"
|
|
"math"
|
|
"time"
|
|
)
|
|
|
|
const redisObjectExpire = 604800
|
|
const errInvalidValue = "invalid value %f"
|
|
|
|
func FloatToBool(input float64) interface{} {
|
|
return int(input) != 0
|
|
}
|
|
|
|
func RoundMilli(input float64) interface{} {
|
|
return math.Round(input*1000) / 1000
|
|
}
|
|
|
|
func RoundGPS(input float64) interface{} {
|
|
return math.Round(input*100000) / 100000
|
|
}
|
|
|
|
func IntCeil(input float64) interface{} {
|
|
return int(math.Ceil(input))
|
|
}
|
|
|
|
func IntFloor(input float64) interface{} {
|
|
return int(math.Floor(input))
|
|
}
|
|
|
|
func Int(input float64) interface{} {
|
|
return int(input)
|
|
}
|
|
|
|
// WHy does this return an array of bytes instead of a string, or a time.Time
|
|
func SerializeTimestampUSec(timestampUSec int) ([]byte, error) {
|
|
return time.UnixMicro(int64(timestampUSec)).UTC().MarshalJSON()
|
|
}
|
|
|
|
func GetMappedStrValues(valueMap map[float64]string) func(float64) interface{} {
|
|
return func(input float64) interface{} {
|
|
if value, ok := valueMap[input]; ok {
|
|
return value
|
|
}
|
|
|
|
return fmt.Sprintf(errInvalidValue, input)
|
|
}
|
|
}
|