github.com/oam-dev/kubevela@v1.9.11/pkg/definition/gen_sdk/openapi-generator/templates/go/model_enum.mustache (about) 1 // {{{classname}}} {{{description}}}{{^description}}the model '{{{classname}}}'{{/description}} 2 type {{{classname}}} {{{format}}}{{^format}}{{dataType}}{{/format}} 3 4 // List of {{{name}}} 5 const ( 6 {{#allowableValues}} 7 {{#enumVars}} 8 {{^-first}} 9 {{/-first}} 10 {{#enumClassPrefix}}{{{classname.toUpperCase}}}_{{/enumClassPrefix}}{{name}} {{{classname}}} = {{{value}}} 11 {{/enumVars}} 12 {{/allowableValues}} 13 ) 14 15 // All allowed values of {{{classname}}} enum 16 var Allowed{{{classname}}}EnumValues = []{{{classname}}}{ 17 {{#allowableValues}} 18 {{#enumVars}} 19 {{{value}}}, 20 {{/enumVars}} 21 {{/allowableValues}} 22 } 23 24 func (v *{{{classname}}}) UnmarshalJSON(src []byte) error { 25 var value {{{format}}}{{^format}}{{dataType}}{{/format}} 26 err := json.Unmarshal(src, &value) 27 if err != nil { 28 return err 29 } 30 enumTypeValue := {{{classname}}}(value) 31 for _, existing := range Allowed{{{classname}}}EnumValues { 32 if existing == enumTypeValue { 33 *v = enumTypeValue 34 return nil 35 } 36 } 37 38 return fmt.Errorf("%+v is not a valid {{classname}}", value) 39 } 40 41 // New{{{classname}}}FromValue returns a pointer to a valid {{{classname}}} 42 // for the value passed as argument, or an error if the value passed is not allowed by the enum 43 func New{{{classname}}}FromValue(v {{{format}}}{{^format}}{{dataType}}{{/format}}) (*{{{classname}}}, error) { 44 ev := {{{classname}}}(v) 45 if ev.IsValid() { 46 return &ev, nil 47 } else { 48 return nil, fmt.Errorf("invalid value '%v' for {{{classname}}}: valid values are %v", v, Allowed{{{classname}}}EnumValues) 49 } 50 } 51 52 // IsValid return true if the value is valid for the enum, false otherwise 53 func (v {{{classname}}}) IsValid() bool { 54 for _, existing := range Allowed{{{classname}}}EnumValues { 55 if existing == v { 56 return true 57 } 58 } 59 return false 60 } 61 62 // Ptr returns reference to {{{name}}} value 63 func (v {{{classname}}}) Ptr() *{{{classname}}} { 64 return &v 65 } 66 67 type Nullable{{{classname}}} struct { 68 value *{{{classname}}} 69 isSet bool 70 } 71 72 func (v Nullable{{classname}}) Get() *{{classname}} { 73 return v.value 74 } 75 76 func (v *Nullable{{classname}}) Set(val *{{classname}}) { 77 v.value = val 78 v.isSet = true 79 } 80 81 func (v Nullable{{classname}}) IsSet() bool { 82 return v.isSet 83 } 84 85 func (v *Nullable{{classname}}) Unset() { 86 v.value = nil 87 v.isSet = false 88 } 89 90 func NewNullable{{classname}}(val *{{classname}}) *Nullable{{classname}} { 91 return &Nullable{{classname}}{value: val, isSet: true} 92 } 93 94 func (v Nullable{{{classname}}}) MarshalJSON() ([]byte, error) { 95 return json.Marshal(v.value) 96 } 97 98 func (v *Nullable{{{classname}}}) UnmarshalJSON(src []byte) error { 99 v.isSet = true 100 return json.Unmarshal(src, &v.value) 101 }