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  }