Skip to content

Commit 921be4b

Browse files
committed
fix: only use semiauto derivation
On large APIs this can dramatically speed up compilation.
1 parent 7aba995 commit 921be4b

7 files changed

Lines changed: 68 additions & 2 deletions

File tree

modules/openapi-generator/src/main/resources/scala-sttp4/model.mustache

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,16 @@ case class {{classname}}(
3636
{{! Empty case class for models with no properties }}
3737
{{/allVars}}
3838
) extends {{vendorExtensions.x-oneOfParent}}
39+
{{#circe}}
40+
object {{classname}} {
41+
import io.circe._
42+
import io.circe.syntax._
43+
import io.circe.generic.semiauto._
44+
45+
implicit val encoder: Encoder[{{classname}}] = deriveEncoder
46+
implicit val decoder: Decoder[{{classname}}] = deriveDecoder
47+
}
48+
{{/circe}}
3949

4050
{{/vendorExtensions.x-oneOfMembers}}
4151
object {{classname}} {
@@ -90,7 +100,6 @@ object {{classname}} {
90100
// oneOf without discriminator - using semiauto derivation
91101
import io.circe.{Encoder, Decoder}
92102
import io.circe.generic.semiauto._
93-
import io.circe.generic.auto._
94103

95104
implicit val encoder: Encoder[{{classname}}] = deriveEncoder
96105
implicit val decoder: Decoder[{{classname}}] = deriveDecoder
@@ -100,7 +109,6 @@ object {{classname}} {
100109
import io.circe.{Encoder, Decoder}
101110
import io.circe.generic.extras._
102111
import io.circe.generic.extras.semiauto._
103-
import io.circe.generic.auto._
104112

105113
private implicit val config: Configuration = Configuration.default.withDiscriminator("{{discriminator.propertyName}}")
106114
.copy(
@@ -185,6 +193,16 @@ case class {{classname}}(
185193
{{/vars}}
186194
){{#parent}} extends {{parent}}{{/parent}}
187195
{{/isEnum}}
196+
{{#circe}}
197+
object {{classname}} {
198+
import io.circe._
199+
import io.circe.syntax._
200+
import io.circe.generic.semiauto._
201+
202+
implicit val encoder: Encoder[{{classname}}] = deriveEncoder
203+
implicit val decoder: Decoder[{{classname}}] = deriveDecoder
204+
}
205+
{{/circe}}
188206
{{#hasEnums}}
189207
object {{classname}}Enums {
190208
{{#vars}}

samples/client/petstore/scala-sttp4-circe/src/main/scala/org/openapitools/client/model/ApiResponse.scala

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,11 @@ case class ApiResponse(
2121
`type`: Option[String] = None,
2222
message: Option[String] = None
2323
)
24+
object ApiResponse {
25+
import io.circe._
26+
import io.circe.syntax._
27+
import io.circe.generic.semiauto._
28+
29+
implicit val encoder: Encoder[ApiResponse] = deriveEncoder
30+
implicit val decoder: Decoder[ApiResponse] = deriveDecoder
31+
}

samples/client/petstore/scala-sttp4-circe/src/main/scala/org/openapitools/client/model/Category.scala

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,11 @@ case class Category(
2020
id: Option[Long] = None,
2121
name: Option[String] = None
2222
)
23+
object Category {
24+
import io.circe._
25+
import io.circe.syntax._
26+
import io.circe.generic.semiauto._
27+
28+
implicit val encoder: Encoder[Category] = deriveEncoder
29+
implicit val decoder: Decoder[Category] = deriveDecoder
30+
}

samples/client/petstore/scala-sttp4-circe/src/main/scala/org/openapitools/client/model/Order.scala

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,14 @@ case class Order(
2626
status: Option[OrderEnums.Status] = None,
2727
complete: Option[Boolean] = None
2828
)
29+
object Order {
30+
import io.circe._
31+
import io.circe.syntax._
32+
import io.circe.generic.semiauto._
33+
34+
implicit val encoder: Encoder[Order] = deriveEncoder
35+
implicit val decoder: Decoder[Order] = deriveDecoder
36+
}
2937
object OrderEnums {
3038

3139
sealed trait Status

samples/client/petstore/scala-sttp4-circe/src/main/scala/org/openapitools/client/model/Pet.scala

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,14 @@ case class Pet(
2525
/* pet status in the store */
2626
status: Option[PetEnums.Status] = None
2727
)
28+
object Pet {
29+
import io.circe._
30+
import io.circe.syntax._
31+
import io.circe.generic.semiauto._
32+
33+
implicit val encoder: Encoder[Pet] = deriveEncoder
34+
implicit val decoder: Decoder[Pet] = deriveDecoder
35+
}
2836
object PetEnums {
2937

3038
sealed trait Status

samples/client/petstore/scala-sttp4-circe/src/main/scala/org/openapitools/client/model/Tag.scala

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,11 @@ case class Tag(
2020
id: Option[Long] = None,
2121
name: Option[String] = None
2222
)
23+
object Tag {
24+
import io.circe._
25+
import io.circe.syntax._
26+
import io.circe.generic.semiauto._
27+
28+
implicit val encoder: Encoder[Tag] = deriveEncoder
29+
implicit val decoder: Decoder[Tag] = deriveDecoder
30+
}

samples/client/petstore/scala-sttp4-circe/src/main/scala/org/openapitools/client/model/User.scala

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,11 @@ case class User(
2727
/* User Status */
2828
userStatus: Option[Int] = None
2929
)
30+
object User {
31+
import io.circe._
32+
import io.circe.syntax._
33+
import io.circe.generic.semiauto._
34+
35+
implicit val encoder: Encoder[User] = deriveEncoder
36+
implicit val decoder: Decoder[User] = deriveDecoder
37+
}

0 commit comments

Comments
 (0)