mirror of
https://github.com/OpenAPITools/openapi-generator.git
synced 2025-05-12 12:40:53 +00:00
[scala][client]: scala-http4s scala3 client: minor improvement (allow empty string in optional enum to pass as None) (#21025)
* [scala][http4s][client]: add enum method; remove implicit * improve error handling * more enum enhancement * remove unused * update samle * avoid breaking change * [Scala][Client][HTTP4s]: when enum is optional, avoid throwing exception when it's empty string --------- Co-authored-by: Jenny Leahy <jennyleahy@JENNYLEAHY.localdomain> Co-authored-by: Jenny Leahy <jennyleahy@Mac.localdomain>
This commit is contained in:
parent
3233eff187
commit
80ab53b2ce
@ -56,7 +56,7 @@ object {{classname}} {
|
||||
given decoder{{classname}}: Decoder[{{classname}}] = Decoder.instance { c =>
|
||||
for {
|
||||
{{#vars}}
|
||||
{{name}} <- c.downField("{{baseName}}").as[{{^required}}Option[{{{dataType}}}]{{/required}}{{#required}}{{{dataType}}}{{/required}}]
|
||||
{{name}} <- {{#isEnumOrRef}}{{^required}}mapEmptyStringToNull(c.downField("{{baseName}}")){{/required}}{{#required}}c.downField("{{baseName}}"){{/required}}{{/isEnumOrRef}}{{^isEnumOrRef}}c.downField("{{baseName}}"){{/isEnumOrRef}}.as[{{^required}}Option[{{{dataType}}}]{{/required}}{{#required}}{{{dataType}}}{{/required}}]
|
||||
{{/vars}}
|
||||
} yield {{classname}}(
|
||||
{{#vars}}
|
||||
|
@ -1,7 +1,7 @@
|
||||
{{>licenseInfo}}
|
||||
package {{packageName}}
|
||||
|
||||
import io.circe.{Decoder, Encoder, Json}
|
||||
import io.circe.{Decoder, Encoder, Json, ACursor}
|
||||
import java.time.{Instant, LocalDate, OffsetDateTime}
|
||||
import java.util.UUID
|
||||
|
||||
@ -31,4 +31,7 @@ package object models {
|
||||
given encodeJson: Encoder[Json] =
|
||||
Encoder.encodeString.contramap[Json](_.toString)
|
||||
|
||||
def mapEmptyStringToNull(f: ACursor): ACursor =
|
||||
f.withFocus(json => if json.toString == "\"\"" then Json.Null else json)
|
||||
|
||||
}
|
@ -52,7 +52,7 @@ object Order {
|
||||
petId <- c.downField("petId").as[Option[Long]]
|
||||
quantity <- c.downField("quantity").as[Option[Int]]
|
||||
shipDate <- c.downField("shipDate").as[Option[Instant]]
|
||||
status <- c.downField("status").as[Option[OrderStatus]]
|
||||
status <- mapEmptyStringToNull(c.downField("status")).as[Option[OrderStatus]]
|
||||
complete <- c.downField("complete").as[Option[Boolean]]
|
||||
} yield Order(
|
||||
id = id,
|
||||
|
@ -53,7 +53,7 @@ object Pet {
|
||||
name <- c.downField("name").as[String]
|
||||
photoUrls <- c.downField("photoUrls").as[Seq[String]]
|
||||
tags <- c.downField("tags").as[Option[Seq[Tag]]]
|
||||
status <- c.downField("status").as[Option[PetStatus]]
|
||||
status <- mapEmptyStringToNull(c.downField("status")).as[Option[PetStatus]]
|
||||
} yield Pet(
|
||||
id = id,
|
||||
category = category,
|
||||
|
@ -10,7 +10,7 @@
|
||||
*/
|
||||
package org.openapitools.client
|
||||
|
||||
import io.circe.{Decoder, Encoder, Json}
|
||||
import io.circe.{Decoder, Encoder, Json, ACursor}
|
||||
import java.time.{Instant, LocalDate, OffsetDateTime}
|
||||
import java.util.UUID
|
||||
|
||||
@ -40,4 +40,7 @@ package object models {
|
||||
given encodeJson: Encoder[Json] =
|
||||
Encoder.encodeString.contramap[Json](_.toString)
|
||||
|
||||
def mapEmptyStringToNull(f: ACursor): ACursor =
|
||||
f.withFocus(json => if json.toString == "\"\"" then Json.Null else json)
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user