387 lines
17 KiB
Plaintext
387 lines
17 KiB
Plaintext
// {{classname}}{{#description}} {{{description}}}{{/description}}{{^description}} struct for {{{classname}}}{{/description}}
|
|
type {{classname}} struct {
|
|
{{#parent}}
|
|
{{^isMap}}
|
|
{{^isArray}}
|
|
{{{parent}}}
|
|
{{/isArray}}
|
|
{{/isMap}}
|
|
{{#isArray}}
|
|
Items {{{parent}}}
|
|
{{/isArray}}
|
|
{{/parent}}
|
|
{{#vars}}
|
|
{{^-first}}
|
|
{{/-first}}
|
|
{{#description}}
|
|
// {{{description}}}
|
|
{{/description}}
|
|
{{name}} {{^required}}{{^isNullable}}*{{/isNullable}}{{/required}}{{#vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-field-type}}{{/vendorExtensions.x-go-field-type}}{{^vendorExtensions.x-go-field-type}}{{{dataType}}}{{/vendorExtensions.x-go-field-type}} `json:"{{baseName}}{{^required}},omitempty{{/required}}" yaml:"{{baseName}}{{^required}},omitempty{{/required}}"{{#withXml}} xml:"{{baseName}}{{#isXmlAttribute}},attr{{/isXmlAttribute}}"{{/withXml}}{{#vendorExtensions.x-go-custom-tag}} {{{.}}}{{/vendorExtensions.x-go-custom-tag}}`
|
|
{{/vars}}
|
|
{{#isAdditionalPropertiesTrue}}
|
|
AdditionalProperties map[string]interface{}
|
|
{{/isAdditionalPropertiesTrue}}
|
|
}
|
|
|
|
{{#isAdditionalPropertiesTrue}}
|
|
type _{{{classname}}} {{{classname}}}
|
|
|
|
{{/isAdditionalPropertiesTrue}}
|
|
// New{{classname}} instantiates a new {{classname}} object
|
|
// This constructor will assign default values to properties that have it defined,
|
|
// and makes sure properties required by API are set, but the set of arguments
|
|
// will change when the set of required properties is changed
|
|
func New{{classname}}({{#requiredVars}}{{nameInCamelCase}} {{#vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-field-type}}{{/vendorExtensions.x-go-field-type}}{{^vendorExtensions.x-go-field-type}}{{dataType}}{{/vendorExtensions.x-go-field-type}}{{^-last}}, {{/-last}}{{/requiredVars}}) *{{classname}} {
|
|
this := {{classname}}{}
|
|
{{#allVars}}
|
|
{{#required}}
|
|
this.{{name}} = {{nameInCamelCase}}
|
|
{{/required}}
|
|
{{^required}}
|
|
{{#defaultValue}}
|
|
{{^vendorExtensions.x-golang-is-container}}
|
|
{{#isNullable}}
|
|
var {{nameInCamelCase}} {{{datatypeWithEnum}}} = {{{.}}}
|
|
this.{{name}} = *New{{{dataType}}}(&{{nameInCamelCase}})
|
|
{{/isNullable}}
|
|
{{^isNullable}}
|
|
var {{nameInCamelCase}} {{{dataType}}} = {{{.}}}
|
|
this.{{name}} = &{{nameInCamelCase}}
|
|
{{/isNullable}}
|
|
{{/vendorExtensions.x-golang-is-container}}
|
|
{{/defaultValue}}
|
|
{{/required}}
|
|
{{/allVars}}
|
|
return &this
|
|
}
|
|
|
|
// New{{classname}}WithDefaults instantiates a new {{classname}} object
|
|
// This constructor will only assign default values to properties that have it defined,
|
|
// but it doesn't guarantee that properties required by API are set
|
|
func New{{classname}}WithDefaults() *{{classname}} {
|
|
this := {{classname}}{}
|
|
{{#vars}}
|
|
{{#defaultValue}}
|
|
{{^vendorExtensions.x-golang-is-container}}
|
|
{{#isNullable}}
|
|
{{!we use datatypeWithEnum here, since it will represent the non-nullable name of the datatype, e.g. int64 for NullableInt64}}
|
|
var {{nameInCamelCase}} {{{datatypeWithEnum}}} = {{{.}}}
|
|
this.{{name}} = *New{{{dataType}}}(&{{nameInCamelCase}})
|
|
{{/isNullable}}
|
|
{{^isNullable}}
|
|
var {{nameInCamelCase}} {{{dataType}}} = {{{.}}}
|
|
this.{{name}} = {{^required}}&{{/required}}{{nameInCamelCase}}
|
|
{{/isNullable}}
|
|
{{/vendorExtensions.x-golang-is-container}}
|
|
{{/defaultValue}}
|
|
{{/vars}}
|
|
return &this
|
|
}
|
|
|
|
{{#vars}}
|
|
{{#required}}
|
|
// Get{{name}} returns the {{name}} field value
|
|
{{#isNullable}}
|
|
// If the value is explicit nil, the zero value for {{vendorExtensions.x-go-base-type}} will be returned
|
|
{{/isNullable}}
|
|
func (o *{{classname}}) Get{{name}}() {{#vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-field-type}}{{/vendorExtensions.x-go-field-type}}{{^vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-base-type}}{{/vendorExtensions.x-go-field-type}} {
|
|
if o == nil{{#isNullable}}{{^vendorExtensions.x-golang-is-container}} || o.{{name}}.Get() == nil{{/vendorExtensions.x-golang-is-container}}{{/isNullable}} {
|
|
var ret {{#vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-field-type}}{{/vendorExtensions.x-go-field-type}}{{^vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-base-type}}{{/vendorExtensions.x-go-field-type}}
|
|
return ret
|
|
}
|
|
|
|
{{#isNullable}}
|
|
{{#vendorExtensions.x-golang-is-container}}
|
|
return o.{{name}}
|
|
{{/vendorExtensions.x-golang-is-container}}
|
|
{{^vendorExtensions.x-golang-is-container}}
|
|
return *o.{{name}}.Get()
|
|
{{/vendorExtensions.x-golang-is-container}}
|
|
{{/isNullable}}
|
|
{{^isNullable}}
|
|
return o.{{name}}
|
|
{{/isNullable}}
|
|
}
|
|
|
|
// Get{{name}}Ok returns a tuple with the {{name}} field value
|
|
// and a boolean to check if the value has been set.
|
|
{{#isNullable}}
|
|
// NOTE: If the value is an explicit nil, `nil, true` will be returned
|
|
{{/isNullable}}
|
|
func (o *{{classname}}) Get{{name}}Ok() (*{{#vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-field-type}}{{/vendorExtensions.x-go-field-type}}{{^vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-base-type}}{{/vendorExtensions.x-go-field-type}}, bool) {
|
|
if o == nil {{#isNullable}}{{#vendorExtensions.x-golang-is-container}}|| o.{{name}} == nil{{/vendorExtensions.x-golang-is-container}}{{/isNullable}} {
|
|
return nil, false
|
|
}
|
|
{{#isNullable}}
|
|
{{#vendorExtensions.x-golang-is-container}}
|
|
return &o.{{name}}, true
|
|
{{/vendorExtensions.x-golang-is-container}}
|
|
{{^vendorExtensions.x-golang-is-container}}
|
|
return o.{{name}}.Get(), o.{{name}}.IsSet()
|
|
{{/vendorExtensions.x-golang-is-container}}
|
|
{{/isNullable}}
|
|
{{^isNullable}}
|
|
return &o.{{name}}, true
|
|
{{/isNullable}}
|
|
}
|
|
|
|
// Set{{name}} sets field value
|
|
func (o *{{classname}}) Set{{name}}(v {{#vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-field-type}}{{/vendorExtensions.x-go-field-type}}{{^vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-base-type}}{{/vendorExtensions.x-go-field-type}}) {
|
|
{{#isNullable}}
|
|
{{#vendorExtensions.x-golang-is-container}}
|
|
o.{{name}} = v
|
|
{{/vendorExtensions.x-golang-is-container}}
|
|
{{^vendorExtensions.x-golang-is-container}}
|
|
o.{{name}}.Set(&v)
|
|
{{/vendorExtensions.x-golang-is-container}}
|
|
{{/isNullable}}
|
|
{{^isNullable}}
|
|
o.{{name}} = v
|
|
{{/isNullable}}
|
|
}
|
|
|
|
{{/required}}
|
|
{{^required}}
|
|
// Get{{name}} returns the {{name}} field value if set, zero value otherwise{{#isNullable}} (both if not set or set to explicit null){{/isNullable}}.
|
|
func (o *{{classname}}) Get{{name}}() {{#vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-field-type}}{{/vendorExtensions.x-go-field-type}}{{^vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-base-type}}{{/vendorExtensions.x-go-field-type}} {
|
|
if o == nil {{^isNullable}}|| o.{{name}} == nil{{/isNullable}}{{#isNullable}}{{^vendorExtensions.x-golang-is-container}}|| o.{{name}}.Get() == nil{{/vendorExtensions.x-golang-is-container}}{{/isNullable}} {
|
|
var ret {{#vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-field-type}}{{/vendorExtensions.x-go-field-type}}{{^vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-base-type}}{{/vendorExtensions.x-go-field-type}}
|
|
return ret
|
|
}
|
|
{{#isNullable}}
|
|
{{#vendorExtensions.x-golang-is-container}}
|
|
return o.{{name}}
|
|
{{/vendorExtensions.x-golang-is-container}}
|
|
{{^vendorExtensions.x-golang-is-container}}
|
|
return *o.{{name}}.Get()
|
|
{{/vendorExtensions.x-golang-is-container}}
|
|
{{/isNullable}}
|
|
{{^isNullable}}
|
|
return *o.{{name}}
|
|
{{/isNullable}}
|
|
}
|
|
|
|
// Get{{name}}Ok returns a tuple with the {{name}} field value if set, nil otherwise
|
|
// and a boolean to check if the value has been set.
|
|
{{#isNullable}}
|
|
// NOTE: If the value is an explicit nil, `nil, true` will be returned
|
|
{{/isNullable}}
|
|
func (o *{{classname}}) Get{{name}}Ok() (*{{#vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-field-type}}{{/vendorExtensions.x-go-field-type}}{{^vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-base-type}}{{/vendorExtensions.x-go-field-type}}, bool) {
|
|
if o == nil {{^isNullable}}|| o.{{name}} == nil{{/isNullable}}{{#isNullable}}{{#vendorExtensions.x-golang-is-container}}|| o.{{name}} == nil{{/vendorExtensions.x-golang-is-container}}{{/isNullable}} {
|
|
return nil, false
|
|
}
|
|
{{#isNullable}}
|
|
{{#vendorExtensions.x-golang-is-container}}
|
|
return &o.{{name}}, true
|
|
{{/vendorExtensions.x-golang-is-container}}
|
|
{{^vendorExtensions.x-golang-is-container}}
|
|
return o.{{name}}.Get(), o.{{name}}.IsSet()
|
|
{{/vendorExtensions.x-golang-is-container}}
|
|
{{/isNullable}}
|
|
{{^isNullable}}
|
|
return o.{{name}}, true
|
|
{{/isNullable}}
|
|
}
|
|
|
|
// Has{{name}} returns a boolean if a field has been set.
|
|
func (o *{{classname}}) Has{{name}}() bool {
|
|
if o != nil && {{^isNullable}}o.{{name}} != nil{{/isNullable}}{{#isNullable}}{{#vendorExtensions.x-golang-is-container}}o.{{name}} != nil{{/vendorExtensions.x-golang-is-container}}{{^vendorExtensions.x-golang-is-container}}o.{{name}}.IsSet(){{/vendorExtensions.x-golang-is-container}}{{/isNullable}} {
|
|
return true
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
// Set{{name}} gets a reference to the given {{dataType}} and assigns it to the {{name}} field.
|
|
func (o *{{classname}}) Set{{name}}(v {{#vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-field-type}}{{/vendorExtensions.x-go-field-type}}{{^vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-base-type}}{{/vendorExtensions.x-go-field-type}}) {
|
|
{{#isNullable}}
|
|
{{#vendorExtensions.x-golang-is-container}}
|
|
o.{{name}} = v
|
|
{{/vendorExtensions.x-golang-is-container}}
|
|
{{^vendorExtensions.x-golang-is-container}}
|
|
o.{{name}}.Set(&v)
|
|
{{/vendorExtensions.x-golang-is-container}}
|
|
{{/isNullable}}
|
|
{{^isNullable}}
|
|
o.{{name}} = &v
|
|
{{/isNullable}}
|
|
}
|
|
{{#isNullable}}
|
|
{{^vendorExtensions.x-golang-is-container}}
|
|
// Set{{name}}Nil sets the value for {{name}} to be an explicit nil
|
|
func (o *{{classname}}) Set{{name}}Nil() {
|
|
o.{{name}}.Set(nil)
|
|
}
|
|
|
|
// Unset{{name}} ensures that no value is present for {{name}}, not even an explicit nil
|
|
func (o *{{classname}}) Unset{{name}}() {
|
|
o.{{name}}.Unset()
|
|
}
|
|
{{/vendorExtensions.x-golang-is-container}}
|
|
{{/isNullable}}
|
|
|
|
{{/required}}
|
|
{{/vars}}
|
|
func (o {{classname}}) MarshalJSON() ([]byte, error) {
|
|
toSerialize := {{#isArray}}make([]interface{}, len(o.Items)){{/isArray}}{{^isArray}}map[string]interface{}{}{{/isArray}}
|
|
{{#parent}}
|
|
{{^isMap}}
|
|
{{^isArray}}
|
|
serialized{{parent}}, err{{parent}} := json.Marshal(o.{{parent}})
|
|
if err{{parent}} != nil {
|
|
return []byte{}, err{{parent}}
|
|
}
|
|
err{{parent}} = json.Unmarshal([]byte(serialized{{parent}}), &toSerialize)
|
|
if err{{parent}} != nil {
|
|
return []byte{}, err{{parent}}
|
|
}
|
|
{{/isArray}}
|
|
{{/isMap}}
|
|
{{#isArray}}
|
|
for i, item := range o.Items {
|
|
toSerialize[i] = item
|
|
}
|
|
{{/isArray}}
|
|
{{/parent}}
|
|
{{#vars}}
|
|
{{! if argument is nullable, only serialize it if it is set}}
|
|
{{#isNullable}}
|
|
{{#vendorExtensions.x-golang-is-container}}
|
|
{{! support for container fields is not ideal at this point because of lack of Nullable* types}}
|
|
if o.{{name}} != nil {
|
|
toSerialize["{{baseName}}"] = o.{{name}}
|
|
}
|
|
{{/vendorExtensions.x-golang-is-container}}
|
|
{{^vendorExtensions.x-golang-is-container}}
|
|
if {{#required}}true{{/required}}{{^required}}o.{{name}}.IsSet(){{/required}} {
|
|
toSerialize["{{baseName}}"] = o.{{name}}.Get()
|
|
}
|
|
{{/vendorExtensions.x-golang-is-container}}
|
|
{{/isNullable}}
|
|
{{! if argument is not nullable, don't set it if it is nil}}
|
|
{{^isNullable}}
|
|
if {{#required}}true{{/required}}{{^required}}o.{{name}} != nil{{/required}} {
|
|
toSerialize["{{baseName}}"] = o.{{name}}
|
|
}
|
|
{{/isNullable}}
|
|
{{/vars}}
|
|
{{#isAdditionalPropertiesTrue}}
|
|
|
|
for key, value := range o.AdditionalProperties {
|
|
toSerialize[key] = value
|
|
}
|
|
|
|
{{/isAdditionalPropertiesTrue}}
|
|
return json.Marshal(toSerialize)
|
|
}
|
|
|
|
{{#isAdditionalPropertiesTrue}}
|
|
func (o *{{{classname}}}) UnmarshalJSON(bytes []byte) (err error) {
|
|
{{#parent}}
|
|
{{^isMap}}
|
|
type {{classname}}WithoutEmbeddedStruct struct {
|
|
{{#vars}}
|
|
{{^-first}}
|
|
{{/-first}}
|
|
{{#description}}
|
|
// {{{description}}}
|
|
{{/description}}
|
|
{{name}} {{^required}}{{^isNullable}}*{{/isNullable}}{{/required}}{{#vendorExtensions.x-go-field-type}}{{vendorExtensions.x-go-field-type}}{{/vendorExtensions.x-go-field-type}}{{^vendorExtensions.x-go-field-type}}{{{dataType}}}{{/vendorExtensions.x-go-field-type}} `json:"{{baseName}}{{^required}},omitempty{{/required}}" yaml:"{{baseName}}{{^required}},omitempty{{/required}}"{{#withXml}} xml:"{{baseName}}{{#isXmlAttribute}},attr{{/isXmlAttribute}}"{{/withXml}}{{#vendorExtensions.x-go-custom-tag}} {{{.}}}{{/vendorExtensions.x-go-custom-tag}}`
|
|
{{/vars}}
|
|
}
|
|
|
|
var{{{classname}}}WithoutEmbeddedStruct := {{{classname}}}WithoutEmbeddedStruct{}
|
|
|
|
err = json.Unmarshal(bytes, &var{{{classname}}}WithoutEmbeddedStruct)
|
|
if err == nil {
|
|
var{{{classname}}} := _{{{classname}}}{}
|
|
{{#vars}}
|
|
var{{{classname}}}.{{{name}}} = var{{{classname}}}WithoutEmbeddedStruct.{{{name}}}
|
|
{{/vars}}
|
|
*o = {{{classname}}}(var{{{classname}}})
|
|
} else {
|
|
return err
|
|
}
|
|
|
|
var{{{classname}}} := _{{{classname}}}{}
|
|
|
|
err = json.Unmarshal(bytes, &var{{{classname}}})
|
|
if err == nil {
|
|
o.{{{parent}}} = var{{{classname}}}.{{{parent}}}
|
|
} else {
|
|
return err
|
|
}
|
|
|
|
additionalProperties := make(map[string]interface{})
|
|
|
|
if err = json.Unmarshal(bytes, &additionalProperties); err == nil {
|
|
{{#vars}}
|
|
delete(additionalProperties, "{{{baseName}}}")
|
|
{{/vars}}
|
|
|
|
// remove fields from embedded structs
|
|
reflect{{{parent}}} := reflect.ValueOf(o.{{{parent}}})
|
|
for i := 0; i < reflect{{{parent}}}.Type().NumField(); i++ {
|
|
t := reflect{{{parent}}}.Type().Field(i)
|
|
|
|
if jsonTag := t.Tag.Get("json"); jsonTag != "" {
|
|
fieldName, _, _ := strings.Cut(jsonTag, ",")
|
|
if fieldName != "AdditionalProperties" {
|
|
delete(additionalProperties, fieldName)
|
|
}
|
|
}
|
|
}
|
|
|
|
o.AdditionalProperties = additionalProperties
|
|
}
|
|
|
|
return err
|
|
{{/isMap}}
|
|
{{#isMap}}
|
|
var{{{classname}}} := _{{{classname}}}{}
|
|
|
|
if err = json.Unmarshal(bytes, &var{{{classname}}}); err == nil {
|
|
*o = {{{classname}}}(var{{{classname}}})
|
|
}
|
|
|
|
additionalProperties := make(map[string]interface{})
|
|
|
|
if err = json.Unmarshal(bytes, &additionalProperties); err == nil {
|
|
{{#vars}}
|
|
delete(additionalProperties, "{{{baseName}}}")
|
|
{{/vars}}
|
|
o.AdditionalProperties = additionalProperties
|
|
}
|
|
|
|
return err
|
|
{{/isMap}}
|
|
{{/parent}}
|
|
{{^parent}}
|
|
var{{{classname}}} := _{{{classname}}}{}
|
|
|
|
if err = json.Unmarshal(bytes, &var{{{classname}}}); err == nil {
|
|
*o = {{{classname}}}(var{{{classname}}})
|
|
}
|
|
|
|
additionalProperties := make(map[string]interface{})
|
|
|
|
if err = json.Unmarshal(bytes, &additionalProperties); err == nil {
|
|
{{#vars}}
|
|
delete(additionalProperties, "{{{baseName}}}")
|
|
{{/vars}}
|
|
o.AdditionalProperties = additionalProperties
|
|
}
|
|
|
|
return err
|
|
{{/parent}}
|
|
}
|
|
|
|
{{/isAdditionalPropertiesTrue}}
|
|
{{#isArray}}
|
|
func (o *{{{classname}}}) UnmarshalJSON(bytes []byte) (err error) {
|
|
return json.Unmarshal(bytes, &o.Items)
|
|
}
|
|
|
|
{{/isArray}}
|
|
{{>nullable_model}}
|