Skip to content

Commit 47c1ab8

Browse files
committed
Add enums to scala-htt4s-server
1 parent 4379a23 commit 47c1ab8

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaHttp4sServerCodegen.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,16 @@ public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs)
350350
// model oneOf as sealed trait
351351

352352
CodegenModel cModel = model.getModel();
353-
cModel.getVendorExtensions().put("x-isSealedTrait", !cModel.oneOf.isEmpty());
353+
354+
if (!cModel.oneOf.isEmpty()) {
355+
cModel.getVendorExtensions().put("x-isSealedTrait", true);
356+
}
357+
else if (cModel.isEnum) {
358+
cModel.getVendorExtensions().put("x-isEnum", true);
359+
360+
} else {
361+
cModel.getVendorExtensions().put("x-another", true);
362+
}
354363

355364
if (cModel.discriminator != null) {
356365
cModel.getVendorExtensions().put("x-use-discr", true);

modules/openapi-generator/src/main/resources/scala-http4s-server/types.mustache

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,18 @@ object {{classname}} {
8282
}
8383
{{/vendorExtensions.x-isSealedTrait}}
8484

85-
{{^vendorExtensions.x-isSealedTrait}}
85+
{{#vendorExtensions.x-isEnum}}
86+
sealed trait {{classname}}
87+
object {{classname}} {
88+
{{#allowableValues}}
89+
{{#values}}
90+
case object {{.}} extends {{classname}}
91+
{{/values}}
92+
{{/allowableValues}}
93+
}
94+
{{/vendorExtensions.x-isEnum}}
95+
96+
{{#vendorExtensions.x-another}}
8697
case class {{classname}}(
8798
{{#vars}}
8899
{{name}}: {{^required}}Option[{{{vendorExtensions.x-type}}}]{{/required}}{{#required}}{{{vendorExtensions.x-type}}}{{/required}}{{^-last}},{{/-last}}
@@ -92,7 +103,7 @@ object {{classname}} {
92103
implicit val encoder{{classname}}: Encoder[{{classname}}] = deriveEncoder[{{classname}}].mapJson(_.dropNullValues)
93104
implicit val decoder{{classname}}: Decoder[{{classname}}] = deriveDecoder[{{classname}}]
94105
}
95-
{{/vendorExtensions.x-isSealedTrait}}
106+
{{/vendorExtensions.x-another}}
96107

97108
{{/model}}
98109
{{/models}}

0 commit comments

Comments
 (0)