// Code generated by enumgen. DO NOT EDIT. package todos import ( "database/sql/driver" "encoding/json" "fmt" ) type Status struct{ val string } var ( StatusUnknown = Status{} StatusOpen = Status{"Open"} StatusInProgress = Status{"InProgress"} StatusDone = Status{"Done"} ) var allStatus = []Status{ StatusUnknown, StatusOpen, StatusInProgress, StatusDone, } var statusByVal = map[string]Status{ "": StatusUnknown, "Open": StatusOpen, "InProgress": StatusInProgress, "Done": StatusDone, } func ParseStatus(s string) (Status, error) { v, ok := statusByVal[s] if !ok { return Status{}, fmt.Errorf("invalid Status %q", s) } return v, nil } func (s Status) Valid() bool { _, ok := statusByVal[s.val]; return ok } func (s Status) Values() []Status { return allStatus } func (s Status) String() string { return s.val } func (s Status) FilterValues() []string { strs := make([]string, len(allStatus)-1) for i, v := range allStatus[1:] { strs[i] = v.String() } return strs } func (s Status) MarshalJSON() ([]byte, error) { return json.Marshal(s.val) } func (s *Status) UnmarshalJSON(b []byte) error { var str string if err := json.Unmarshal(b, &str); err != nil { return err } v, err := ParseStatus(str) if err != nil { return err } *s = v return nil } func (s Status) Value() (driver.Value, error) { return s.val, nil } func (s *Status) Scan(src any) error { str, ok := src.(string) if !ok { return fmt.Errorf("Status.Scan: expected string, got %T", src) } v, err := ParseStatus(str) if err != nil { return err } *s = v return nil }