From 61c862478880b155c961e2dc3a8426e09188060c Mon Sep 17 00:00:00 2001 From: Julien Tanguy Date: Thu, 13 Apr 2023 10:26:15 +0000 Subject: [PATCH] fix: set nullable when it's a pointer of Struct --- openapi/generator.go | 12 +++++++++++- openapi/generator_test.go | 1 + 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/openapi/generator.go b/openapi/generator.go index 99f6833..2eda06b 100644 --- a/openapi/generator.go +++ b/openapi/generator.go @@ -895,7 +895,17 @@ func (g *Generator) newSchemaFromType(t reflect.Type) *SchemaOrRef { case reflect.Slice, reflect.Array, reflect.Map: return g.buildSchemaRecursive(t) case reflect.Struct: - return g.newSchemaFromStruct(t) + sor := g.newSchemaFromStruct(t) + var schema *Schema + if sor != nil && sor.Schema != nil { + schema = sor.Schema + } else if sor != nil { + schema = g.resolveSchema(sor) + } + if schema != nil { + schema.Nullable = nullable + } + return sor } } if dt == TypeAny { diff --git a/openapi/generator_test.go b/openapi/generator_test.go index e63ac74..d2c9759 100644 --- a/openapi/generator_test.go +++ b/openapi/generator_test.go @@ -228,6 +228,7 @@ func TestSchemaFromComplex(t *testing.T) { sor = g.API().Components.Schemas["Y"] schema = g.resolveSchema(sor) assert.NotNil(t, schema) + assert.True(t, schema.Nullable) actual, err = json.Marshal(schema) if err != nil {