helper.go 892 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package util
  2. import (
  3. "hash/fnv"
  4. "strings"
  5. )
  6. var (
  7. KB = 1024
  8. MB = 1024 * KB
  9. GB = 1024 * MB
  10. )
  11. func Hash(s []string) uint64 {
  12. h := fnv.New64a()
  13. for _, v := range s {
  14. h.Write([]byte(v))
  15. }
  16. return h.Sum64()
  17. }
  18. func MetricNameFor(metric string, labels []string, values []string) string {
  19. var sb strings.Builder
  20. sb.WriteString(metric)
  21. sb.WriteRune('{')
  22. for i := 0; i < len(labels); i++ {
  23. sb.WriteRune('"')
  24. sb.WriteString(labels[i])
  25. sb.WriteString(`"="`)
  26. sb.WriteString(values[i])
  27. sb.WriteRune('"')
  28. if i < len(labels)-1 {
  29. sb.WriteRune(',')
  30. }
  31. }
  32. sb.WriteRune('}')
  33. return sb.String()
  34. }
  35. func ToMap(labels []string, values []string) map[string]string {
  36. min := len(labels)
  37. if len(values) < min {
  38. min = len(values)
  39. }
  40. m := make(map[string]string, min)
  41. for i := 0; i < min; i++ {
  42. m[labels[i]] = values[i]
  43. }
  44. return m
  45. }
  46. func Ptr[T any](v T) *T {
  47. return &v
  48. }