Files

31 lines
811 B
Go
Raw Permalink Normal View History

package event
import (
"fmt"
"strings"
)
// Kind identifies the "type/category" of an event for routing and policy decisions.
//
// Kind is intentionally open-ended (stringly-typed), because different daemons will
// have different kinds:
//
// weatherfeeder: "observation", "forecast", "alert"
// newsfeeder: "article", "breaking", ...
// stockfeeder: "quote", "bar", "news", ...
//
// Conventions (recommended, not required):
// - lowercase
// - words separated by underscores if needed
type Kind string
// ParseKind normalizes and validates a kind string.
// It lowercases and trims whitespace, and rejects empty values.
func ParseKind(s string) (Kind, error) {
k := strings.ToLower(strings.TrimSpace(s))
if k == "" {
return "", fmt.Errorf("kind cannot be empty")
}
return Kind(k), nil
}