Files
go-enum/example/sql_str_enum.go

172 lines
3.7 KiB
Go

// 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
}