// Code generated by go-enum DO NOT EDIT. // Version: example // Revision: example // Build Date: example // Built By: example //go:build example // +build example package example import ( "database/sql/driver" "errors" "fmt" ) const ( // JobStatePending is a JobState of type Pending. JobStatePending JobState = iota // JobStateProcessing is a JobState of type Processing. JobStateProcessing // JobStateCompleted is a JobState of type Completed. JobStateCompleted // JobStateFailed is a JobState of type Failed. JobStateFailed ) var ErrInvalidJobState = errors.New("not a valid JobState") const _JobStateName = "pendingprocessingcompletedfailed" var _JobStateMap = map[JobState]string{ JobStatePending: _JobStateName[0:7], JobStateProcessing: _JobStateName[7:17], JobStateCompleted: _JobStateName[17:26], JobStateFailed: _JobStateName[26:32], } // String implements the Stringer interface. func (x JobState) String() string { if str, ok := _JobStateMap[x]; ok { return str } return fmt.Sprintf("JobState(%d)", x) } // IsValid provides a quick way to determine if the typed value is // part of the allowed enumerated values func (x JobState) IsValid() bool { _, ok := _JobStateMap[x] return ok } var _JobStateValue = map[string]JobState{ _JobStateName[0:7]: JobStatePending, _JobStateName[7:17]: JobStateProcessing, _JobStateName[17:26]: JobStateCompleted, _JobStateName[26:32]: JobStateFailed, } // ParseJobState attempts to convert a string to a JobState. func ParseJobState(name string) (JobState, error) { if x, ok := _JobStateValue[name]; ok { return x, nil } return JobState(0), fmt.Errorf("%s is %w", name, ErrInvalidJobState) } var errJobStateNilPtr = errors.New("value pointer is nil") // one per type for package clashes // Scan implements the Scanner interface. func (x *JobState) Scan(value interface{}) (err error) { if value == nil { *x = JobState(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 = JobState(v) case string: *x, err = ParseJobState(v) case []byte: *x, err = ParseJobState(string(v)) case JobState: *x = v case int: *x = JobState(v) case *JobState: if v == nil { return errJobStateNilPtr } *x = *v case uint: *x = JobState(v) case uint64: *x = JobState(v) case *int: if v == nil { return errJobStateNilPtr } *x = JobState(*v) case *int64: if v == nil { return errJobStateNilPtr } *x = JobState(*v) case float64: // json marshals everything as a float64 if it's a number *x = JobState(v) case *float64: // json marshals everything as a float64 if it's a number if v == nil { return errJobStateNilPtr } *x = JobState(*v) case *uint: if v == nil { return errJobStateNilPtr } *x = JobState(*v) case *uint64: if v == nil { return errJobStateNilPtr } *x = JobState(*v) case *string: if v == nil { return errJobStateNilPtr } *x, err = ParseJobState(*v) } return } // Value implements the driver Valuer interface. func (x JobState) Value() (driver.Value, error) { return x.String(), nil } type NullJobState struct { JobState JobState Valid bool } func NewNullJobState(val interface{}) (x NullJobState) { x.Scan(val) // yes, we ignore this error, it will just be an invalid value. return } // Scan implements the Scanner interface. func (x *NullJobState) Scan(value interface{}) (err error) { if value == nil { x.JobState, x.Valid = JobState(0), false return } err = x.JobState.Scan(value) x.Valid = (err == nil) return } // Value implements the driver Valuer interface. func (x NullJobState) Value() (driver.Value, error) { if !x.Valid { return nil, nil } return x.JobState.String(), nil }