Skip to content

Commit 92af675

Browse files
authored
Fix OpenAPIGen for opt payloads (#3181)
1 parent 83a24a5 commit 92af675

File tree

3 files changed

+8
-5
lines changed

3 files changed

+8
-5
lines changed

zio-http/jvm/src/test/scala/zio/http/endpoint/openapi/OpenAPIGenSpec.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1029,8 +1029,7 @@ object OpenAPIGenSpec extends ZIOSpecDefault {
10291029
| {
10301030
| "$ref" : "#/components/schemas/Payload"
10311031
| }
1032-
| ],
1033-
| "description" : ""
1032+
| ]
10341033
| }
10351034
| }
10361035
| },

zio-http/shared/src/main/scala/zio/http/endpoint/openapi/JsonSchema.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,11 @@ private[openapi] case class SerializableJsonSchema(
5555
if (nullable && schemaType.isDefined)
5656
copy(schemaType = Some(schemaType.get.add("null")))
5757
else if (nullable && oneOf.isDefined)
58-
copy(oneOf = Some(oneOf.get :+ typeNull))
58+
copy(oneOf = Some((oneOf.get :+ typeNull).distinct))
5959
else if (nullable && allOf.isDefined)
60-
SerializableJsonSchema(allOf = Some(Chunk(this, typeNull)))
60+
SerializableJsonSchema(allOf = Some((allOf.get :+ typeNull).distinct))
6161
else if (nullable && anyOf.isDefined)
62-
copy(anyOf = Some(anyOf.get :+ typeNull))
62+
copy(anyOf = Some((anyOf.get :+ typeNull).distinct))
6363
else if (nullable && ref.isDefined)
6464
SerializableJsonSchema(anyOf = Some(Chunk(typeNull, this)))
6565
else

zio-http/shared/src/main/scala/zio/http/endpoint/openapi/OpenAPIGen.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -984,6 +984,10 @@ object OpenAPIGen {
984984
}
985985
case t: Transform[_, _, _] =>
986986
nominal(t.schema, referenceType)
987+
case Schema.Optional(inner, _) =>
988+
nominal(inner, referenceType)
989+
case Schema.Lazy(schema0) =>
990+
nominal(schema0(), referenceType)
987991
case _ => None
988992
}
989993

0 commit comments

Comments
 (0)