route.go 1023 B

1234567891011121314151617181920212223242526272829303132333435
  1. package allocation
  2. import "github.com/opencost/opencost/core/pkg/autocomplete"
  3. // Route describes how to query a normalized allocation autocomplete field.
  4. type Route int
  5. const (
  6. RouteDefault Route = iota
  7. RouteLabelKeys
  8. RouteLabelValue
  9. RouteNamespaceLabelKeys
  10. RouteNamespaceLabelValue
  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. if kind, key, err := autocomplete.ParseLabelField(field, autocomplete.LabelPrefix); err == nil {
  15. switch kind {
  16. case autocomplete.LabelFieldKeys:
  17. return RouteLabelKeys, "", nil
  18. case autocomplete.LabelFieldValue:
  19. return RouteLabelValue, key, nil
  20. }
  21. }
  22. if kind, key, err := autocomplete.ParseLabelField(field, autocomplete.NamespaceLabelPrefix); err == nil {
  23. switch kind {
  24. case autocomplete.LabelFieldKeys:
  25. return RouteNamespaceLabelKeys, "", nil
  26. case autocomplete.LabelFieldValue:
  27. return RouteNamespaceLabelValue, key, nil
  28. }
  29. }
  30. return RouteDefault, "", nil
  31. }