Compare commits

...

3 Commits

Author SHA1 Message Date
alu 05519694e1 add vmid to instance 2026-07-07 16:42:07 +00:00
alu 78e6de32d7 add uint to uint64 for SafeUint64 2026-07-07 03:36:32 +00:00
alu 24904dde66 improve FormatNumber logic 2026-06-26 20:57:49 +00:00
2 changed files with 16 additions and 18 deletions
+1
View File
@@ -21,6 +21,7 @@ const VM InstanceType = "VM"
const CT InstanceType = "CT"
type Instance struct {
VMID InstanceID `json:"vmid" mapstructure:"vmid"`
Type InstanceType `json:"type" mapstructure:"type"`
Name string `json:"name" mapstructure:"name"`
Proctype string `json:"cpu" mapstructure:"cpu"`
+11 -14
View File
@@ -24,34 +24,31 @@ const GiB uint64 = MiB * Base1024
const TiB uint64 = GiB * Base1024
func FormatNumber(val uint64, base uint64) (string, string) {
prefixes := []string{""}
switch base {
case Base1000:
prefixes = prefixesBase1000
case Base1024:
prefixes = prefixesBase1024
default:
}
valf := float64(val)
basef := float64(base)
steps := 0
for math.Abs(valf) > basef && steps < 4 {
for math.Abs(valf) > basef && steps < len(prefixes)-1 {
valf /= basef
steps++
}
switch base {
case Base1000:
s := fmt.Sprintf("%.4f", valf)
s = strings.TrimRight(s, "0")
s = strings.TrimRight(s, ".")
prefixes := prefixesBase1000
return s, prefixes[steps]
case Base1024:
s := fmt.Sprintf("%.4f", valf)
s = strings.TrimRight(s, "0")
s = strings.TrimRight(s, ".")
prefixes := prefixesBase1024
return s, prefixes[steps]
default:
return "0", ""
}
}
// Converts int, int32, and int64 to uint64. Less than 0 check.
func SafeUint64[I int | int32 | int64](i I) uint64 {
func SafeUint64[I int | int32 | int64 | uint | uint32](i I) uint64 {
if i < 0 {
log.Printf("Tried to cast %d to uint64", i)
return 0