github.com/oam-dev/kubevela@v1.9.11/pkg/definition/gen_sdk/openapi-generator/templates/go/model_simple.mustache (about)

     1  // checks if the {{classname}} type satisfies the MappedNullable interface at compile time
     2  var _ utils.MappedNullable = &{{classname}}{}
     3  
     4  // {{classname}} {{{description}}}{{^description}}struct for {{{classname}}}{{/description}}
     5  type {{classname}} struct {
     6  {{#parent}}
     7  {{^isMap}}
     8  {{^isArray}}
     9  	{{{parent}}}
    10  {{/isArray}}
    11  {{/isMap}}
    12  {{#isArray}}
    13  	Items {{{parent}}}
    14  {{/isArray}}
    15  {{/parent}}
    16  {{#vars}}
    17  {{^-first}}
    18  {{/-first}}
    19  {{#description}}
    20  	// {{{.}}}
    21  {{/description}}
    22  {{#deprecated}}
    23  	// Deprecated
    24  {{/deprecated}}
    25  	{{name}} {{^isNullable}}{{^isArray}}{{^isMap}}{{^isFreeFormObject}}*{{/isFreeFormObject}}{{/isMap}}{{/isArray}}{{/isNullable}}{{{dataType}}} `json:"{{baseName}}{{^required}},omitempty{{/required}}"{{#withXml}} xml:"{{baseName}}{{#isXmlAttribute}},attr{{/isXmlAttribute}}"{{/withXml}}{{#vendorExtensions.x-go-custom-tag}} {{{.}}}{{/vendorExtensions.x-go-custom-tag}}`
    26  {{/vars}}
    27  {{#isAdditionalPropertiesTrue}}
    28  	AdditionalProperties map[string]interface{}
    29  {{/isAdditionalPropertiesTrue}}
    30  }
    31  
    32  {{#isAdditionalPropertiesTrue}}
    33  type _{{{classname}}} {{{classname}}}
    34  
    35  {{/isAdditionalPropertiesTrue}}
    36  // New{{classname}}With instantiates a new {{classname}} object
    37  // This constructor will make sure properties required by API are set.
    38  // For optional properties, it will set default values if they have been defined.
    39  // The set of arguments will change when the set of required properties is changed
    40  func New{{classname}}With({{#requiredVars}}{{nameInCamelCase}} {{dataType}}{{^-last}}, {{/-last}}{{/requiredVars}}) *{{classname}} {
    41  	this := {{classname}}{}
    42  {{#allVars}}
    43  {{#required}}
    44  	this.{{name}} = {{^isArray}}{{^isMap}}{{^isFreeFormObject}}&{{/isFreeFormObject}}{{/isMap}}{{/isArray}}{{nameInCamelCase}}
    45  {{/required}}
    46  {{^required}}
    47  {{#defaultValue}}
    48  {{^vendorExtensions.x-golang-is-container}}
    49  {{^isReadOnly}}
    50  {{#isNullable}}
    51  	var {{nameInCamelCase}} {{{datatypeWithEnum}}} = {{{.}}}
    52  	this.{{name}} = *New{{{dataType}}}(&{{nameInCamelCase}})
    53  {{/isNullable}}
    54  {{^isNullable}}
    55  	var {{nameInCamelCase}} {{{dataType}}} = {{{.}}}
    56  	this.{{name}} = {{^isArray}}{{^isFreeFormObject}}&{{/isFreeFormObject}}{{/isArray}}{{nameInCamelCase}}
    57  {{/isNullable}}
    58  {{/isReadOnly}}
    59  {{/vendorExtensions.x-golang-is-container}}
    60  {{/defaultValue}}
    61  {{/required}}
    62  {{/allVars}}
    63  	return &this
    64  }
    65  
    66  // New{{classname}}WithDefault instantiates a new {{classname}} object
    67  // This constructor will only assign default values to properties that have it defined,
    68  // but it doesn't guarantee that properties required by API are set
    69  func New{{classname}}WithDefault() *{{classname}} {
    70  	this := {{classname}}{}
    71  {{#vars}}
    72  {{#defaultValue}}
    73  {{^vendorExtensions.x-golang-is-container}}
    74  {{^isReadOnly}}
    75  {{#isNullable}}
    76  {{!we use datatypeWithEnum here, since it will represent the non-nullable name of the datatype, e.g. int64 for NullableInt64}}
    77  	var {{nameInCamelCase}} {{{datatypeWithEnum}}} = {{{.}}}
    78  	this.{{name}} = *New{{{dataType}}}(&{{nameInCamelCase}})
    79  {{/isNullable}}
    80  {{^isNullable}}
    81  	var {{nameInCamelCase}} {{{dataType}}} = {{{.}}}
    82  	this.{{name}} = &{{nameInCamelCase}}
    83  {{/isNullable}}
    84  {{/isReadOnly}}
    85  {{/vendorExtensions.x-golang-is-container}}
    86  {{/defaultValue}}
    87  {{/vars}}
    88  	return &this
    89  }
    90  
    91  // New{{classname}} is short for New{{classname}}WithDefault which instantiates a new {{classname}} object.
    92  // This constructor will only assign default values to properties that have it defined,
    93  // but it doesn't guarantee that properties required by API are set
    94  func New{{classname}}() *{{classname}} {
    95      return New{{classname}}WithDefault()
    96  }
    97  
    98  // New{{classname}}Empty instantiates a new {{classname}} object with no properties set.
    99  // This constructor will not assign any default values to properties.
   100  func New{{classname}}Empty() *{{classname}} {
   101      this := {{classname}}{}
   102      return &this
   103  }
   104  
   105  
   106  // New{{classname}}s converts a list {{classname}} pointers to objects.
   107  // This is helpful when the Set{{classname}} requires a list of objects
   108  func New{{classname}}List(ps ...*{{classname}}) []{{classname}} {
   109  	objs := []{{classname}}{}
   110  	for _, p := range ps {
   111          objs = append(objs, *p)
   112      }
   113  	return objs
   114  }
   115  
   116  
   117  // Validate validates this {{classname}}
   118  // 1. If the required properties are not set, this will return an error
   119  // 2. If properties are set, will check if nested required properties are set
   120  func (o *{{classname}}) Validate() error{
   121  {{#allVars}}
   122      {{#required}}
   123          if o.{{name}} == nil {
   124          return errors.New("{{name}} in {{classname}} must be set")
   125          }
   126      {{/required}}
   127  {{/allVars}}
   128    // validate all nested properties
   129  {{#allVars}}
   130      {{#isModel}}
   131          if o.{{name}} != nil {
   132              if err:=o.{{name}}.Validate(); err != nil {
   133                  return err
   134              }
   135          }
   136      {{/isModel}}
   137  {{/allVars}}
   138  return nil
   139  }
   140  
   141  {{#vars}}
   142  {{#required}}
   143  // Get{{name}} returns the {{name}} field value
   144  {{#isNullable}}
   145  // If the value is explicit nil, the zero value for {{vendorExtensions.x-go-base-type}} will be returned
   146  {{/isNullable}}
   147  {{#deprecated}}
   148  // Deprecated
   149  {{/deprecated}}
   150  func (o *{{classname}}) Get{{name}}() {{vendorExtensions.x-go-base-type}} {
   151  	if o == nil{{#isNullable}}{{^vendorExtensions.x-golang-is-container}} || o.{{name}}.Get() == nil{{/vendorExtensions.x-golang-is-container}}{{/isNullable}} {
   152  		var ret {{vendorExtensions.x-go-base-type}}
   153  		return ret
   154  	}
   155  
   156  {{#isNullable}}
   157  {{#vendorExtensions.x-golang-is-container}}
   158  	return o.{{name}}
   159  {{/vendorExtensions.x-golang-is-container}}
   160  {{^vendorExtensions.x-golang-is-container}}
   161  	return *o.{{name}}.Get()
   162  {{/vendorExtensions.x-golang-is-container}}
   163  {{/isNullable}}
   164  {{^isNullable}}
   165  	return {{^isArray}}{{^isMap}}{{^isFreeFormObject}}*{{/isFreeFormObject}}{{/isMap}}{{/isArray}}o.{{name}}
   166  {{/isNullable}}
   167  }
   168  
   169  // Get{{name}}Ok returns a tuple with the {{name}} field value
   170  // and a boolean to check if the value has been set.
   171  {{#isNullable}}
   172  // NOTE: If the value is an explicit nil, `nil, true` will be returned
   173  {{/isNullable}}
   174  {{#deprecated}}
   175  // Deprecated
   176  {{/deprecated}}
   177  func (o *{{classname}}) Get{{name}}Ok() ({{^isMap}}{{^isArray}}{{^isFreeFormObject}}*{{/isFreeFormObject}}{{/isArray}}{{/isMap}}{{vendorExtensions.x-go-base-type}}, bool) {
   178  	if o == nil{{#isNullable}}{{#vendorExtensions.x-golang-is-container}} || utils.IsNil(o.{{name}}){{/vendorExtensions.x-golang-is-container}}{{/isNullable}} {
   179  {{^isFreeFormObject}}
   180  		return nil, false
   181  	{{/isFreeFormObject}}
   182  	{{#isFreeFormObject}}
   183  		return {{vendorExtensions.x-go-base-type}}{}, false
   184  	{{/isFreeFormObject}}
   185  	}
   186  {{#isNullable}}
   187  {{#vendorExtensions.x-golang-is-container}}
   188      {{! KubeVela: remove the de-pointer operator here }}
   189  	return {{^isArray}}{{^isFreeFormObject}}{{/isFreeFormObject}}{{/isArray}}o.{{name}}, true
   190  {{/vendorExtensions.x-golang-is-container}}
   191  {{^vendorExtensions.x-golang-is-container}}
   192  	return o.{{name}}.Get(), o.{{name}}.IsSet()
   193  {{/vendorExtensions.x-golang-is-container}}
   194  {{/isNullable}}
   195  {{^isNullable}}
   196      return {{^isMap}}{{^isArray}}{{^isFreeFormObject}}{{/isFreeFormObject}}{{/isArray}}{{/isMap}}o.{{name}}, true
   197  {{/isNullable}}
   198  }
   199  
   200  // Set{{name}} sets field value
   201  {{#deprecated}}
   202  // Deprecated
   203  {{/deprecated}}
   204  func (o *{{classname}}) Set{{name}}(v {{vendorExtensions.x-go-base-type}}) *{{classname}} {
   205  {{#isNullable}}
   206  {{#vendorExtensions.x-golang-is-container}}
   207  	o.{{name}} = v
   208      return o
   209  {{/vendorExtensions.x-golang-is-container}}
   210  {{^vendorExtensions.x-golang-is-container}}
   211  	o.{{name}}.Set(&v)
   212      return o
   213  {{/vendorExtensions.x-golang-is-container}}
   214  {{/isNullable}}
   215  {{^isNullable}}
   216  	o.{{name}} = {{^isMap}}{{^isArray}}{{^isFreeFormObject}}&{{/isFreeFormObject}}{{/isArray}}{{/isMap}}v
   217      return o
   218  {{/isNullable}}
   219  }
   220  
   221  {{/required}}
   222  {{^required}}
   223  // Get{{name}} returns the {{name}} field value if set, zero value otherwise{{#isNullable}} (both if not set or set to explicit null){{/isNullable}}.
   224  {{#deprecated}}
   225  // Deprecated
   226  {{/deprecated}}
   227  func (o *{{classname}}) Get{{name}}() {{vendorExtensions.x-go-base-type}} {
   228  	if o == nil{{^isNullable}} || utils.IsNil(o.{{name}}){{/isNullable}}{{#isNullable}}{{^vendorExtensions.x-golang-is-container}} || utils.IsNil(o.{{name}}.Get()){{/vendorExtensions.x-golang-is-container}}{{/isNullable}} {
   229  		var ret {{vendorExtensions.x-go-base-type}}
   230  		return ret
   231  	}
   232  {{#isNullable}}
   233  {{#vendorExtensions.x-golang-is-container}}
   234  	return o.{{name}}
   235  {{/vendorExtensions.x-golang-is-container}}
   236  {{^vendorExtensions.x-golang-is-container}}
   237  	return *o.{{name}}.Get()
   238  {{/vendorExtensions.x-golang-is-container}}
   239  {{/isNullable}}
   240  {{^isNullable}}
   241  	return {{^isMap}}{{^isArray}}{{^isFreeFormObject}}*{{/isFreeFormObject}}{{/isArray}}{{/isMap}}o.{{name}}
   242  {{/isNullable}}
   243  }
   244  
   245  // Get{{name}}Ok returns a tuple with the {{name}} field value if set, nil otherwise
   246  // and a boolean to check if the value has been set.
   247  {{#isNullable}}
   248  // NOTE: If the value is an explicit nil, `nil, true` will be returned
   249  {{/isNullable}}
   250  {{#deprecated}}
   251  // Deprecated
   252  {{/deprecated}}
   253  func (o *{{classname}}) Get{{name}}Ok() ({{^isMap}}{{^isArray}}{{^isFreeFormObject}}*{{/isFreeFormObject}}{{/isArray}}{{/isMap}}{{vendorExtensions.x-go-base-type}}, bool) {
   254  	if o == nil{{^isNullable}} || utils.IsNil(o.{{name}}){{/isNullable}}{{#isNullable}}{{#vendorExtensions.x-golang-is-container}} || utils.IsNil(o.{{name}}){{/vendorExtensions.x-golang-is-container}}{{/isNullable}} {
   255  	{{^isFreeFormObject}}
   256  		return nil, false
   257  	{{/isFreeFormObject}}
   258  	{{#isFreeFormObject}}
   259  		return {{vendorExtensions.x-go-base-type}}{}, false
   260  	{{/isFreeFormObject}}
   261  	}
   262  {{#isNullable}}
   263  {{#vendorExtensions.x-golang-is-container}}
   264  	return {{^isArray}}{{^isFreeFormObject}}&{{/isFreeFormObject}}{{/isArray}}o.{{name}}, true
   265  {{/vendorExtensions.x-golang-is-container}}
   266  {{^vendorExtensions.x-golang-is-container}}
   267  	return o.{{name}}.Get(), o.{{name}}.IsSet()
   268  {{/vendorExtensions.x-golang-is-container}}
   269  {{/isNullable}}
   270  {{^isNullable}}
   271  	return o.{{name}}, true
   272  {{/isNullable}}
   273  }
   274  
   275  // Has{{name}} returns a boolean if a field has been set.
   276  func (o *{{classname}}) Has{{name}}() bool {
   277  	if o != nil && {{^isNullable}}!utils.IsNil(o.{{name}}){{/isNullable}}{{#isNullable}}{{#vendorExtensions.x-golang-is-container}}utils.IsNil(o.{{name}}){{/vendorExtensions.x-golang-is-container}}{{^vendorExtensions.x-golang-is-container}}o.{{name}}.IsSet(){{/vendorExtensions.x-golang-is-container}}{{/isNullable}} {
   278  		return true
   279  	}
   280  
   281  	return false
   282  }
   283  
   284  // Set{{name}} gets a reference to the given {{dataType}} and assigns it to the {{nameInCamelCase}} field.
   285  // {{Name}}: {{#description}} {{{.}}} {{/description}}
   286  {{#deprecated}}
   287  // Deprecated
   288  {{/deprecated}}
   289  func (o *{{classname}}) Set{{name}}(v {{vendorExtensions.x-go-base-type}}) (*{{classname}}){
   290  {{#isNullable}}
   291  {{#vendorExtensions.x-golang-is-container}}
   292  	o.{{name}} = v
   293  {{/vendorExtensions.x-golang-is-container}}
   294  {{^vendorExtensions.x-golang-is-container}}
   295  	o.{{name}}.Set({{^isArray}}{{^isFreeFormObject}}&{{/isFreeFormObject}}{{/isArray}}v)
   296  {{/vendorExtensions.x-golang-is-container}}
   297  {{/isNullable}}
   298  {{^isNullable}}
   299  	o.{{name}} = {{^isMap}}{{^isArray}}{{^isFreeFormObject}}&{{/isFreeFormObject}}{{/isArray}}{{/isMap}}v
   300  {{/isNullable}}
   301  return o
   302  }
   303  {{#isNullable}}
   304  {{^vendorExtensions.x-golang-is-container}}
   305  // Set{{name}}Nil sets the value for {{name}} to be an explicit nil
   306  func (o *{{classname}}) Set{{name}}Nil() {
   307  	o.{{name}}.Set(nil)
   308  }
   309  
   310  // Unset{{name}} ensures that no value is present for {{name}}, not even an explicit nil
   311  func (o *{{classname}}) Unset{{name}}() {
   312  	o.{{name}}.Unset()
   313  }
   314  {{/vendorExtensions.x-golang-is-container}}
   315  {{/isNullable}}
   316  
   317  {{/required}}
   318  {{/vars}}
   319  func (o {{classname}}) MarshalJSON() ([]byte, error) {
   320  	toSerialize,err := o.ToMap()
   321  	if err != nil {
   322  		return []byte{}, err
   323  	}
   324  	return json.Marshal(toSerialize)
   325  }
   326  
   327  func (o {{classname}}) ToMap() (map[string]interface{}, error) {
   328  	toSerialize := {{#isArray}}make([]interface{}, len(o.Items)){{/isArray}}{{^isArray}}map[string]interface{}{}{{/isArray}}
   329  	{{#parent}}
   330  	{{^isMap}}
   331  	{{^isArray}}
   332  	serialized{{parent}}, err{{parent}} := json.Marshal(o.{{parent}})
   333  	if err{{parent}} != nil {
   334  		return map[string]interface{}{}, err{{parent}}
   335  	}
   336  	err{{parent}} = json.Unmarshal([]byte(serialized{{parent}}), &toSerialize)
   337  	if err{{parent}} != nil {
   338  		return map[string]interface{}{}, err{{parent}}
   339  	}
   340  	{{/isArray}}
   341  	{{/isMap}}
   342  	{{#isArray}}
   343  	for i, item := range o.Items {
   344  		toSerialize[i] = item
   345  	}
   346  	{{/isArray}}
   347  	{{/parent}}
   348  	{{#vars}}
   349  	{{! if argument is nullable, only serialize it if it is set}}
   350  	{{#isNullable}}
   351  	{{#vendorExtensions.x-golang-is-container}}
   352  	{{! support for container fields is not ideal at this point because of lack of Nullable* types}}
   353  	if o.{{name}} != nil {
   354  		toSerialize["{{baseName}}"] = o.{{name}}
   355  	}
   356  	{{/vendorExtensions.x-golang-is-container}}
   357  	{{^vendorExtensions.x-golang-is-container}}
   358  	{{#required}}
   359  	toSerialize["{{baseName}}"] = o.{{name}}.Get()
   360  	{{/required}}
   361  	{{^required}}
   362  	if o.{{name}}.IsSet() {
   363  		toSerialize["{{baseName}}"] = o.{{name}}.Get()
   364  	}
   365  	{{/required}}
   366  	{{/vendorExtensions.x-golang-is-container}}
   367  	{{/isNullable}}
   368  	{{! if argument is not nullable, don't set it if it is nil}}
   369  	{{^isNullable}}
   370  	{{^isReadOnly}}
   371  	{{#required}}
   372  	toSerialize["{{baseName}}"] = o.{{name}}
   373  	{{/required}}
   374  	{{^required}}
   375  	if !utils.IsNil(o.{{name}}) {
   376  		toSerialize["{{baseName}}"] = o.{{name}}
   377  	}
   378  	{{/required}}
   379  	{{/isReadOnly}}
   380  	{{#isReadOnly}}
   381  	// skip: {{baseName}} is readOnly
   382  	{{/isReadOnly}}
   383  	{{/isNullable}}
   384  	{{/vars}}
   385  	{{#isAdditionalPropertiesTrue}}
   386  
   387  	for key, value := range o.AdditionalProperties {
   388  		toSerialize[key] = value
   389  	}
   390  
   391  	{{/isAdditionalPropertiesTrue}}
   392  	return toSerialize, nil
   393  }
   394  
   395  {{#isAdditionalPropertiesTrue}}
   396  func (o *{{{classname}}}) UnmarshalJSON(bytes []byte) (err error) {
   397  {{#parent}}
   398  {{^isMap}}
   399  	type {{classname}}WithoutEmbeddedStruct struct {
   400  	{{#vars}}
   401  	{{^-first}}
   402  	{{/-first}}
   403  	{{#description}}
   404  		// {{{.}}}
   405  	{{/description}}
   406  	{{#deprecated}}
   407  		// Deprecated
   408  	{{/deprecated}}
   409  		{{name}} {{^required}}{{^isNullable}}{{^isArray}}{{^isFreeFormObject}}*{{/isFreeFormObject}}{{/isArray}}{{/isNullable}}{{/required}}{{{dataType}}} `json:"{{baseName}}{{^required}},omitempty{{/required}}"{{#withXml}} xml:"{{baseName}}{{#isXmlAttribute}},attr{{/isXmlAttribute}}"{{/withXml}}{{#vendorExtensions.x-go-custom-tag}} {{{.}}}{{/vendorExtensions.x-go-custom-tag}}`
   410  	{{/vars}}
   411  	}
   412  
   413  	var{{{classname}}}WithoutEmbeddedStruct := {{{classname}}}WithoutEmbeddedStruct{}
   414  
   415  	err = json.Unmarshal(bytes, &var{{{classname}}}WithoutEmbeddedStruct)
   416  	if err == nil {
   417  		var{{{classname}}} := _{{{classname}}}{}
   418  		{{#vars}}
   419  		var{{{classname}}}.{{{name}}} = var{{{classname}}}WithoutEmbeddedStruct.{{{name}}}
   420  		{{/vars}}
   421  		*o = {{{classname}}}(var{{{classname}}})
   422  	} else {
   423  		return err
   424  	}
   425  
   426  	var{{{classname}}} := _{{{classname}}}{}
   427  
   428  	err = json.Unmarshal(bytes, &var{{{classname}}})
   429  	if err == nil {
   430  		o.{{{parent}}} = var{{{classname}}}.{{{parent}}}
   431  	} else {
   432  		return err
   433  	}
   434  
   435  	additionalProperties := make(map[string]interface{})
   436  
   437  	if err = json.Unmarshal(bytes, &additionalProperties); err == nil {
   438  		{{#vars}}
   439  		delete(additionalProperties, "{{{baseName}}}")
   440  		{{/vars}}
   441  
   442  		// remove fields from embedded structs
   443  		reflect{{{parent}}} := reflect.ValueOf(o.{{{parent}}})
   444  		for i := 0; i < reflect{{{parent}}}.Type().NumField(); i++ {
   445  			t := reflect{{{parent}}}.Type().Field(i)
   446  
   447  			if jsonTag := t.Tag.Get("json"); jsonTag != "" {
   448  				fieldName := ""
   449  				if commaIdx := strings.Index(jsonTag, ","); commaIdx > 0 {
   450  					fieldName = jsonTag[:commaIdx]
   451  				} else {
   452  					fieldName = jsonTag
   453  				}
   454  				if fieldName != "AdditionalProperties" {
   455  					delete(additionalProperties, fieldName)
   456  				}
   457  			}
   458  		}
   459  
   460  		o.AdditionalProperties = additionalProperties
   461  	}
   462  
   463  	return err
   464  {{/isMap}}
   465  {{#isMap}}
   466  	var{{{classname}}} := _{{{classname}}}{}
   467  
   468  	if err = json.Unmarshal(bytes, &var{{{classname}}}); err == nil {
   469  		*o = {{{classname}}}(var{{{classname}}})
   470  	}
   471  
   472  	additionalProperties := make(map[string]interface{})
   473  
   474  	if err = json.Unmarshal(bytes, &additionalProperties); err == nil {
   475  		{{#vars}}
   476  		delete(additionalProperties, "{{{baseName}}}")
   477  		{{/vars}}
   478  		o.AdditionalProperties = additionalProperties
   479  	}
   480  
   481  	return err
   482  {{/isMap}}
   483  {{/parent}}
   484  {{^parent}}
   485  	var{{{classname}}} := _{{{classname}}}{}
   486  
   487  	if err = json.Unmarshal(bytes, &var{{{classname}}}); err == nil {
   488  		*o = {{{classname}}}(var{{{classname}}})
   489  	}
   490  
   491  	additionalProperties := make(map[string]interface{})
   492  
   493  	if err = json.Unmarshal(bytes, &additionalProperties); err == nil {
   494  		{{#vars}}
   495  		delete(additionalProperties, "{{{baseName}}}")
   496  		{{/vars}}
   497  		o.AdditionalProperties = additionalProperties
   498  	}
   499  
   500  	return err
   501  {{/parent}}
   502  }
   503  
   504  {{/isAdditionalPropertiesTrue}}
   505  {{#isArray}}
   506  func (o *{{{classname}}}) UnmarshalJSON(bytes []byte) (err error) {
   507  	return json.Unmarshal(bytes, &o.Items)
   508  }
   509  
   510  {{/isArray}}
   511  {{>nullable_model}}