diff --git a/modules/openapi-generator/src/main/resources/go-server/model.mustache b/modules/openapi-generator/src/main/resources/go-server/model.mustache index 6ef715feb3a2..e94a8b9a2dd8 100644 --- a/modules/openapi-generator/src/main/resources/go-server/model.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/model.mustache @@ -174,6 +174,61 @@ func Assert{{classname}}Constraints(obj {{classname}}) error { return &ParsingError{Param: "{{name}}", Err: errors.New(errMsgMaxValueConstraint)} } {{/maximum}} +{{#isNullable}} +{{#isModel}} + if obj.{{name}} != nil { +{{/isModel}} +{{#isArray}} +{{#items.isModel}} + if obj.{{name}} != nil { +{{/items.isModel}} +{{/isArray}} +{{/isNullable}} +{{#isModel}} +{{#isNullable}} {{/isNullable}} if err := Assert{{baseType}}Constraints({{#isNullable}}*{{/isNullable}}obj.{{name}}); err != nil { +{{#isNullable}} {{/isNullable}} return err +{{#isNullable}} {{/isNullable}} } +{{/isModel}} +{{#isArray}} +{{#items.isModel}} +{{#isNullable}} {{/isNullable}} for _, el := range {{#isNullable}}*{{/isNullable}}obj.{{name}} { +{{#isNullable}} {{/isNullable}} if err := Assert{{items.baseType}}Constraints(el); err != nil { +{{#isNullable}} {{/isNullable}} return err +{{#isNullable}} {{/isNullable}} } +{{#isNullable}} {{/isNullable}} } +{{/items.isModel}} +{{^items.isModel}} +{{#mostInnerItems.isModel}} +{{^mostInnerItems.isPrimitiveType}} +{{#isNullable}} + if obj.{{name}} != nil { +{{/isNullable}} +{{#isNullable}} {{/isNullable}} if err := AssertRecurseInterfaceRequired({{#isNullable}}*{{/isNullable}}obj.{{name}}, Assert{{mostInnerItems.dataType}}Constraints); err != nil { +{{#isNullable}} {{/isNullable}} return err +{{#isNullable}} {{/isNullable}} } +{{/mostInnerItems.isPrimitiveType}} +{{/mostInnerItems.isModel}} +{{/items.isModel}} +{{/isArray}} +{{#isNullable}} +{{#isModel}} + } +{{/isModel}} +{{#isArray}} +{{#items.isModel}} + } +{{/items.isModel}} +{{^items.isModel}} +{{#mostInnerItems.isModel}} +{{^mostInnerItems.isPrimitiveType}} +{{#isNullable}} + } +{{/isNullable}} +{{/mostInnerItems.isPrimitiveType}} +{{/mostInnerItems.isModel}} +{{/items.isModel}} +{{/isArray}} +{{/isNullable}} {{/Vars}} return nil }{{/model}}{{/models}} diff --git a/samples/openapi3/server/petstore/go/go-petstore/go/model_an_object.go b/samples/openapi3/server/petstore/go/go-petstore/go/model_an_object.go index e5bdcff24953..b5b8e6c5276f 100644 --- a/samples/openapi3/server/petstore/go/go-petstore/go/model_an_object.go +++ b/samples/openapi3/server/petstore/go/go-petstore/go/model_an_object.go @@ -37,5 +37,13 @@ func AssertAnObjectRequired(obj AnObject) error { // AssertAnObjectConstraints checks if the values respects the defined constraints func AssertAnObjectConstraints(obj AnObject) error { + if err := AssertTagConstraints(obj.Tag); err != nil { + return err + } + for _, el := range obj.Pet { + if err := AssertPetConstraints(el); err != nil { + return err + } + } return nil } diff --git a/samples/openapi3/server/petstore/go/go-petstore/go/model_pet.go b/samples/openapi3/server/petstore/go/go-petstore/go/model_pet.go index 48537769fb05..38a5af1d3935 100644 --- a/samples/openapi3/server/petstore/go/go-petstore/go/model_pet.go +++ b/samples/openapi3/server/petstore/go/go-petstore/go/model_pet.go @@ -60,5 +60,17 @@ func AssertPetRequired(obj Pet) error { // AssertPetConstraints checks if the values respects the defined constraints func AssertPetConstraints(obj Pet) error { + if obj.Category != nil { + if err := AssertCategoryConstraints(*obj.Category); err != nil { + return err + } + } + if obj.Tags != nil { + for _, el := range *obj.Tags { + if err := AssertTagConstraints(el); err != nil { + return err + } + } + } return nil } diff --git a/samples/openapi3/server/petstore/go/go-petstore/go/model_user.go b/samples/openapi3/server/petstore/go/go-petstore/go/model_user.go index 973b8986d38e..29803083edbf 100644 --- a/samples/openapi3/server/petstore/go/go-petstore/go/model_user.go +++ b/samples/openapi3/server/petstore/go/go-petstore/go/model_user.go @@ -64,5 +64,13 @@ func AssertUserRequired(obj User) error { // AssertUserConstraints checks if the values respects the defined constraints func AssertUserConstraints(obj User) error { + if obj.DeepSliceModel != nil { + if err := AssertRecurseInterfaceRequired(*obj.DeepSliceModel, AssertTagConstraints); err != nil { + return err + } + } + if err := AssertRecurseInterfaceRequired(obj.DeepSliceMap, AssertAnObjectConstraints); err != nil { + return err + } return nil } diff --git a/samples/server/petstore/go-api-server/go/model_an_object.go b/samples/server/petstore/go-api-server/go/model_an_object.go index e5bdcff24953..b5b8e6c5276f 100644 --- a/samples/server/petstore/go-api-server/go/model_an_object.go +++ b/samples/server/petstore/go-api-server/go/model_an_object.go @@ -37,5 +37,13 @@ func AssertAnObjectRequired(obj AnObject) error { // AssertAnObjectConstraints checks if the values respects the defined constraints func AssertAnObjectConstraints(obj AnObject) error { + if err := AssertTagConstraints(obj.Tag); err != nil { + return err + } + for _, el := range obj.Pet { + if err := AssertPetConstraints(el); err != nil { + return err + } + } return nil } diff --git a/samples/server/petstore/go-api-server/go/model_pet.go b/samples/server/petstore/go-api-server/go/model_pet.go index 48537769fb05..38a5af1d3935 100644 --- a/samples/server/petstore/go-api-server/go/model_pet.go +++ b/samples/server/petstore/go-api-server/go/model_pet.go @@ -60,5 +60,17 @@ func AssertPetRequired(obj Pet) error { // AssertPetConstraints checks if the values respects the defined constraints func AssertPetConstraints(obj Pet) error { + if obj.Category != nil { + if err := AssertCategoryConstraints(*obj.Category); err != nil { + return err + } + } + if obj.Tags != nil { + for _, el := range *obj.Tags { + if err := AssertTagConstraints(el); err != nil { + return err + } + } + } return nil } diff --git a/samples/server/petstore/go-api-server/go/model_user.go b/samples/server/petstore/go-api-server/go/model_user.go index 973b8986d38e..29803083edbf 100644 --- a/samples/server/petstore/go-api-server/go/model_user.go +++ b/samples/server/petstore/go-api-server/go/model_user.go @@ -64,5 +64,13 @@ func AssertUserRequired(obj User) error { // AssertUserConstraints checks if the values respects the defined constraints func AssertUserConstraints(obj User) error { + if obj.DeepSliceModel != nil { + if err := AssertRecurseInterfaceRequired(*obj.DeepSliceModel, AssertTagConstraints); err != nil { + return err + } + } + if err := AssertRecurseInterfaceRequired(obj.DeepSliceMap, AssertAnObjectConstraints); err != nil { + return err + } return nil } diff --git a/samples/server/petstore/go-chi-server/go/model_an_object.go b/samples/server/petstore/go-chi-server/go/model_an_object.go index e5bdcff24953..b5b8e6c5276f 100644 --- a/samples/server/petstore/go-chi-server/go/model_an_object.go +++ b/samples/server/petstore/go-chi-server/go/model_an_object.go @@ -37,5 +37,13 @@ func AssertAnObjectRequired(obj AnObject) error { // AssertAnObjectConstraints checks if the values respects the defined constraints func AssertAnObjectConstraints(obj AnObject) error { + if err := AssertTagConstraints(obj.Tag); err != nil { + return err + } + for _, el := range obj.Pet { + if err := AssertPetConstraints(el); err != nil { + return err + } + } return nil } diff --git a/samples/server/petstore/go-chi-server/go/model_pet.go b/samples/server/petstore/go-chi-server/go/model_pet.go index 48537769fb05..38a5af1d3935 100644 --- a/samples/server/petstore/go-chi-server/go/model_pet.go +++ b/samples/server/petstore/go-chi-server/go/model_pet.go @@ -60,5 +60,17 @@ func AssertPetRequired(obj Pet) error { // AssertPetConstraints checks if the values respects the defined constraints func AssertPetConstraints(obj Pet) error { + if obj.Category != nil { + if err := AssertCategoryConstraints(*obj.Category); err != nil { + return err + } + } + if obj.Tags != nil { + for _, el := range *obj.Tags { + if err := AssertTagConstraints(el); err != nil { + return err + } + } + } return nil } diff --git a/samples/server/petstore/go-chi-server/go/model_user.go b/samples/server/petstore/go-chi-server/go/model_user.go index 973b8986d38e..29803083edbf 100644 --- a/samples/server/petstore/go-chi-server/go/model_user.go +++ b/samples/server/petstore/go-chi-server/go/model_user.go @@ -64,5 +64,13 @@ func AssertUserRequired(obj User) error { // AssertUserConstraints checks if the values respects the defined constraints func AssertUserConstraints(obj User) error { + if obj.DeepSliceModel != nil { + if err := AssertRecurseInterfaceRequired(*obj.DeepSliceModel, AssertTagConstraints); err != nil { + return err + } + } + if err := AssertRecurseInterfaceRequired(obj.DeepSliceMap, AssertAnObjectConstraints); err != nil { + return err + } return nil }