From 603de05c56a80abbeaa4b19e02e690311109da6e Mon Sep 17 00:00:00 2001 From: technicianted Date: Sat, 30 Sep 2023 19:58:55 -0700 Subject: [PATCH] Fix handling of reference types --- openapiGenerator.go | 2 +- testdata/golden/openapiv3.json | 61 +------------------------- testdata/golden/testRef/openapiv3.json | 61 +------------------------- testdata/golden/testpkg.json | 48 +------------------- testdata/golden/testpkg2.json | 17 +------ 5 files changed, 7 insertions(+), 182 deletions(-) diff --git a/openapiGenerator.go b/openapiGenerator.go index 89033a5..df5bfc4 100644 --- a/openapiGenerator.go +++ b/openapiGenerator.go @@ -392,7 +392,7 @@ func (g *openapiGenerator) generateMessageSchema(message *protomodel.MessageDesc for _, field := range message.Fields { sr := g.fieldTypeRef(field) - o.WithProperty(g.fieldName(field), sr.Value) + o.WithPropertyRef(g.fieldName(field), sr) } return o diff --git a/testdata/golden/openapiv3.json b/testdata/golden/openapiv3.json index 5a0786e..80928ce 100644 --- a/testdata/golden/openapiv3.json +++ b/testdata/golden/openapiv3.json @@ -35,53 +35,7 @@ "type": "string" }, "test2": { - "properties": { - "field1": { - "description": "field1 is a field", - "format": "int32", - "type": "integer" - }, - "field10": { - "format": "int64", - "type": "integer", - "x-kubernetes-int-or-string": true - }, - "field3": { - "type": "number" - }, - "field4": { - "type": "number" - }, - "field5": { - "format": "int32", - "type": "integer" - }, - "field6": { - "format": "int32", - "type": "integer" - }, - "field7": { - "format": "int32", - "type": "integer" - }, - "field8": { - "format": "int32", - "type": "integer" - }, - "field9": { - "format": "int64", - "type": "integer", - "x-kubernetes-int-or-string": true - }, - "str": { - "description": "an array of strings", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" + "$ref": "#/components/schemas/testpkg.Test2" } }, "type": "object" @@ -235,18 +189,7 @@ "type": "object" }, "messageOneOfField": { - "description": "messageoneof comment", - "properties": { - "name": { - "type": "string" - }, - "number": { - "description": "Valid port number", - "format": "int32", - "type": "integer" - } - }, - "type": "object" + "$ref": "#/components/schemas/testpkg2.MessageOneOf" }, "oneoffield1": { "type": "string" diff --git a/testdata/golden/testRef/openapiv3.json b/testdata/golden/testRef/openapiv3.json index b9f13dd..177a0de 100644 --- a/testdata/golden/testRef/openapiv3.json +++ b/testdata/golden/testRef/openapiv3.json @@ -35,53 +35,7 @@ "type": "string" }, "test2": { - "properties": { - "field1": { - "description": "field1 is a field", - "format": "int32", - "type": "integer" - }, - "field10": { - "format": "int64", - "type": "integer", - "x-kubernetes-int-or-string": true - }, - "field3": { - "type": "number" - }, - "field4": { - "type": "number" - }, - "field5": { - "format": "int32", - "type": "integer" - }, - "field6": { - "format": "int32", - "type": "integer" - }, - "field7": { - "format": "int32", - "type": "integer" - }, - "field8": { - "format": "int32", - "type": "integer" - }, - "field9": { - "format": "int64", - "type": "integer", - "x-kubernetes-int-or-string": true - }, - "str": { - "description": "an array of strings", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" + "$ref": "#/components/schemas/testpkg.Test2" } }, "type": "object" @@ -226,18 +180,7 @@ "type": "object" }, "messageOneOfField": { - "description": "messageoneof comment", - "properties": { - "name": { - "type": "string" - }, - "number": { - "description": "Valid port number", - "format": "int32", - "type": "integer" - } - }, - "type": "object" + "$ref": "#/components/schemas/testpkg2.MessageOneOf" }, "oneoffield1": { "type": "string" diff --git a/testdata/golden/testpkg.json b/testdata/golden/testpkg.json index 4153f6b..a7026fd 100644 --- a/testdata/golden/testpkg.json +++ b/testdata/golden/testpkg.json @@ -35,53 +35,7 @@ "type": "string" }, "test2": { - "properties": { - "field1": { - "description": "field1 is a field", - "format": "int32", - "type": "integer" - }, - "field10": { - "format": "int64", - "type": "integer", - "x-kubernetes-int-or-string": true - }, - "field3": { - "type": "number" - }, - "field4": { - "type": "number" - }, - "field5": { - "format": "int32", - "type": "integer" - }, - "field6": { - "format": "int32", - "type": "integer" - }, - "field7": { - "format": "int32", - "type": "integer" - }, - "field8": { - "format": "int32", - "type": "integer" - }, - "field9": { - "format": "int64", - "type": "integer", - "x-kubernetes-int-or-string": true - }, - "str": { - "description": "an array of strings", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" + "$ref": "#/components/schemas/testpkg.Test2" } }, "type": "object" diff --git a/testdata/golden/testpkg2.json b/testdata/golden/testpkg2.json index 2ba370a..e0f193a 100644 --- a/testdata/golden/testpkg2.json +++ b/testdata/golden/testpkg2.json @@ -96,22 +96,7 @@ "type": "object" }, "messageOneOfField": { - "description": "messageoneof comment", - "properties": { - "port": { - "oneOf": [ - { - "description": "Valid port number", - "format": "int32", - "type": "integer" - }, - { - "type": "string" - } - ] - } - }, - "type": "object" + "$ref": "#/components/schemas/testpkg2.MessageOneOf" }, "str": { "description": "an array of strings",