route.go 832 B

123456789101112131415161718192021222324252627282930313233
  1. package asset
  2. import "github.com/opencost/opencost/core/pkg/autocomplete"
  3. // Route describes how to query a normalized asset autocomplete field.
  4. type Route int
  5. const (
  6. RouteDefault Route = iota
  7. RouteLabelKeys
  8. RouteLabelValue
  9. RouteStaticType
  10. RouteStaticCategory
  11. )
  12. // RouteField maps a normalized field to a query route and label key when applicable.
  13. func RouteField(field string) (Route, string, error) {
  14. switch field {
  15. case "type":
  16. return RouteStaticType, "", nil
  17. case "category":
  18. return RouteStaticCategory, "", nil
  19. }
  20. if kind, key, err := autocomplete.ParseLabelField(field, autocomplete.LabelPrefix); err == nil {
  21. switch kind {
  22. case autocomplete.LabelFieldKeys:
  23. return RouteLabelKeys, "", nil
  24. case autocomplete.LabelFieldValue:
  25. return RouteLabelValue, key, nil
  26. }
  27. }
  28. return RouteDefault, "", nil
  29. }