Skip to content

Commit 3e46ec6

Browse files
committed
Add enums to scala-http4s-server
1 parent 4379a23 commit 3e46ec6

File tree

2 files changed

+33
-3
lines changed

2 files changed

+33
-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: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,14 @@ import io.circe.generic.semiauto.{ deriveDecoder, deriveEncoder }
1111
import {{.}}
1212
{{/imports}}
1313

14+
{{#models}}
15+
{{#model}}
16+
{{#vendorExtensions.x-isEnum}}
17+
import {{modelPackage}}.{{classname}}.{{classname}}
18+
{{/vendorExtensions.x-isEnum}}
19+
{{/model}}
20+
{{/models}}
21+
1422
{{#models}}
1523
{{#model}}
1624
/**
@@ -82,7 +90,20 @@ object {{classname}} {
8290
}
8391
{{/vendorExtensions.x-isSealedTrait}}
8492

85-
{{^vendorExtensions.x-isSealedTrait}}
93+
{{#vendorExtensions.x-isEnum}}
94+
object {{classname}} extends Enumeration {
95+
type {{classname}} = Value
96+
{{#allowableValues}}
97+
{{#values}}
98+
val {{.}} = Value
99+
{{/values}}
100+
{{/allowableValues}}
101+
implicit val decoder: Decoder[{{classname}}.Value] = Decoder.decodeEnumeration({{classname}})
102+
implicit val encoder: Encoder[{{classname}}.Value] = Encoder.encodeEnumeration({{classname}})
103+
}
104+
{{/vendorExtensions.x-isEnum}}
105+
106+
{{#vendorExtensions.x-another}}
86107
case class {{classname}}(
87108
{{#vars}}
88109
{{name}}: {{^required}}Option[{{{vendorExtensions.x-type}}}]{{/required}}{{#required}}{{{vendorExtensions.x-type}}}{{/required}}{{^-last}},{{/-last}}
@@ -92,7 +113,7 @@ object {{classname}} {
92113
implicit val encoder{{classname}}: Encoder[{{classname}}] = deriveEncoder[{{classname}}].mapJson(_.dropNullValues)
93114
implicit val decoder{{classname}}: Decoder[{{classname}}] = deriveDecoder[{{classname}}]
94115
}
95-
{{/vendorExtensions.x-isSealedTrait}}
116+
{{/vendorExtensions.x-another}}
96117

97118
{{/model}}
98119
{{/models}}

0 commit comments

Comments
 (0)