// Code generated by go-enum DO NOT EDIT. // Version: - // Revision: - // Build Date: - // Built By: - package fields import ( "database/sql/driver" "errors" "fmt" "strconv" "strings" ) const ( // UserStatusOk is a UserStatus of type Ok. UserStatusOk UserStatus = iota // UserStatusBanned is a UserStatus of type Banned. UserStatusBanned // UserStatusBlocked is a UserStatus of type Blocked. UserStatusBlocked ) var ErrInvalidUserStatus = fmt.Errorf("not a valid UserStatus, try [%s]", strings.Join(_UserStatusNames, ", ")) const _UserStatusName = "okbannedblocked" var _UserStatusNames = []string{ _UserStatusName[0:2], _UserStatusName[2:8], _UserStatusName[8:15], } // UserStatusNames returns a list of possible string values of UserStatus. func UserStatusNames() []string { tmp := make([]string, len(_UserStatusNames)) copy(tmp, _UserStatusNames) return tmp } // UserStatusValues returns a list of the values for UserStatus func UserStatusValues() []UserStatus { return []UserStatus{ UserStatusOk, UserStatusBanned, UserStatusBlocked, } } var _UserStatusMap = map[UserStatus]string{ UserStatusOk: _UserStatusName[0:2], UserStatusBanned: _UserStatusName[2:8], UserStatusBlocked: _UserStatusName[8:15], } // String implements the Stringer interface. func (x UserStatus) String() string { if str, ok := _UserStatusMap[x]; ok { return str } return fmt.Sprintf("UserStatus(%d)", x) } // IsValid provides a quick way to determine if the typed value is // part of the allowed enumerated values func (x UserStatus) IsValid() bool { _, ok := _UserStatusMap[x] return ok } var _UserStatusValue = map[string]UserStatus{ _UserStatusName[0:2]: UserStatusOk, _UserStatusName[2:8]: UserStatusBanned, _UserStatusName[8:15]: UserStatusBlocked, } // ParseUserStatus attempts to convert a string to a UserStatus. func ParseUserStatus(name string) (UserStatus, error) { if x, ok := _UserStatusValue[name]; ok { return x, nil } return UserStatus(0), fmt.Errorf("%s is %w", name, ErrInvalidUserStatus) } var errUserStatusNilPtr = errors.New("value pointer is nil") // one per type for package clashes // Scan implements the Scanner interface. func (x *UserStatus) Scan(value interface{}) (err error) { if value == nil { *x = UserStatus(0) return } // A wider range of scannable types. // driver.Value values at the top of the list for expediency switch v := value.(type) { case int64: *x = UserStatus(v) case string: *x, err = ParseUserStatus(v) if err != nil { // try parsing the integer value as a string if val, verr := strconv.Atoi(v); verr == nil { *x, err = UserStatus(val), nil } } case []byte: *x, err = ParseUserStatus(string(v)) if err != nil { // try parsing the integer value as a string if val, verr := strconv.Atoi(string(v)); verr == nil { *x, err = UserStatus(val), nil } } case UserStatus: *x = v case int: *x = UserStatus(v) case *UserStatus: if v == nil { return errUserStatusNilPtr } *x = *v case uint: *x = UserStatus(v) case uint64: *x = UserStatus(v) case *int: if v == nil { return errUserStatusNilPtr } *x = UserStatus(*v) case *int64: if v == nil { return errUserStatusNilPtr } *x = UserStatus(*v) case float64: // json marshals everything as a float64 if it's a number *x = UserStatus(v) case *float64: // json marshals everything as a float64 if it's a number if v == nil { return errUserStatusNilPtr } *x = UserStatus(*v) case *uint: if v == nil { return errUserStatusNilPtr } *x = UserStatus(*v) case *uint64: if v == nil { return errUserStatusNilPtr } *x = UserStatus(*v) case *string: if v == nil { return errUserStatusNilPtr } *x, err = ParseUserStatus(*v) if err != nil { // try parsing the integer value as a string if val, verr := strconv.Atoi(*v); verr == nil { *x, err = UserStatus(val), nil } } } return } // Value implements the driver Valuer interface. func (x UserStatus) Value() (driver.Value, error) { return int64(x), nil } // Set implements the Golang flag.Value interface func. func (x *UserStatus) Set(val string) error { v, err := ParseUserStatus(val) *x = v return err } // Get implements the Golang flag.Getter interface func. func (x *UserStatus) Get() interface{} { return *x } // Type implements the github.com/spf13/pFlag Value interface. func (x *UserStatus) Type() string { return "UserStatus" } type NullUserStatus struct { UserStatus UserStatus Valid bool } func NewNullUserStatus(val interface{}) (x NullUserStatus) { x.Scan(val) // yes, we ignore this error, it will just be an invalid value. return } // Scan implements the Scanner interface. func (x *NullUserStatus) Scan(value interface{}) (err error) { if value == nil { x.UserStatus, x.Valid = UserStatus(0), false return } err = x.UserStatus.Scan(value) x.Valid = (err == nil) return } // Value implements the driver Valuer interface. func (x NullUserStatus) Value() (driver.Value, error) { if !x.Valid { return nil, nil } // driver.Value accepts int64 for int values. return int64(x.UserStatus), nil } type NullUserStatusStr struct { NullUserStatus } func NewNullUserStatusStr(val interface{}) (x NullUserStatusStr) { x.Scan(val) // yes, we ignore this error, it will just be an invalid value. return } // Value implements the driver Valuer interface. func (x NullUserStatusStr) Value() (driver.Value, error) { if !x.Valid { return nil, nil } return x.UserStatus.String(), nil }