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