Skip to content

Commit

Permalink
[GO] Add assert constraints checks for complex types in the model tem…
Browse files Browse the repository at this point in the history
…plate (OpenAPITools#18654)

* [GO] Add assert constraints checks for complex types in the model template

* [GO] Update samples

* [GO] revert AssertRecurseInterface naming
  • Loading branch information
avivlevitski-vlz authored and Renato Mameli committed May 17, 2024
1 parent 7fa2739 commit 042ded1
Show file tree
Hide file tree
Showing 10 changed files with 139 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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}}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions samples/openapi3/server/petstore/go/go-petstore/go/model_pet.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions samples/server/petstore/go-api-server/go/model_an_object.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions samples/server/petstore/go-api-server/go/model_pet.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions samples/server/petstore/go-api-server/go/model_user.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions samples/server/petstore/go-chi-server/go/model_an_object.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions samples/server/petstore/go-chi-server/go/model_pet.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions samples/server/petstore/go-chi-server/go/model_user.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 042ded1

Please sign in to comment.