|
|
|
|
@@ -36,6 +36,10 @@ import kotlinx.parcelize.Parcelize
|
|
|
|
|
import kotlinx.serialization.*
|
|
|
|
|
import kotlinx.serialization.descriptors.*
|
|
|
|
|
import kotlinx.serialization.encoding.*
|
|
|
|
|
{{#discriminator}}import kotlinx.serialization.json.JsonContentPolymorphicSerializer
|
|
|
|
|
import kotlinx.serialization.json.JsonElement
|
|
|
|
|
import kotlinx.serialization.json.jsonObject
|
|
|
|
|
{{/discriminator}}
|
|
|
|
|
{{/multiplatform}}
|
|
|
|
|
{{#serializableModel}}
|
|
|
|
|
import java.io.Serializable
|
|
|
|
|
@@ -55,18 +59,18 @@ import {{packageName}}.infrastructure.ITransformForStorage
|
|
|
|
|
{{#parcelizeModels}}
|
|
|
|
|
@Parcelize
|
|
|
|
|
{{/parcelizeModels}}
|
|
|
|
|
{{#multiplatform}}{{^discriminator}}@Serializable{{/discriminator}}{{/multiplatform}}{{#kotlinx_serialization}}{{#serializableModel}}@KSerializable{{/serializableModel}}{{^serializableModel}}@Serializable{{/serializableModel}}{{/kotlinx_serialization}}{{#moshi}}{{#moshiCodeGen}}@JsonClass(generateAdapter = true){{/moshiCodeGen}}{{/moshi}}{{#jackson}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}}{{/jackson}}
|
|
|
|
|
{{#multiplatform}}@Serializable{{#discriminator}}(with = {{classname}}Serializer::class){{/discriminator}}{{/multiplatform}}{{#kotlinx_serialization}}{{#serializableModel}}@KSerializable{{/serializableModel}}{{^serializableModel}}@Serializable{{/serializableModel}}{{/kotlinx_serialization}}{{#moshi}}{{#moshiCodeGen}}@JsonClass(generateAdapter = true){{/moshiCodeGen}}{{/moshi}}{{#jackson}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}}{{/jackson}}
|
|
|
|
|
{{#isDeprecated}}
|
|
|
|
|
@Deprecated(message = "This schema is deprecated.")
|
|
|
|
|
{{/isDeprecated}}
|
|
|
|
|
{{>additionalModelTypeAnnotations}}
|
|
|
|
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{#discriminator}}interface{{/discriminator}}{{^discriminator}}data class{{/discriminator}} {{classname}}{{^discriminator}} (
|
|
|
|
|
{{#nonPublicApi}}internal {{/nonPublicApi}}{{#discriminator}}sealed class{{/discriminator}}{{^discriminator}}data class{{/discriminator}} {{classname}}{{^discriminator}} (
|
|
|
|
|
|
|
|
|
|
{{#allVars}}
|
|
|
|
|
{{#required}}{{>data_class_req_var}}{{/required}}{{^required}}{{>data_class_opt_var}}{{/required}}{{^-last}},{{/-last}}
|
|
|
|
|
|
|
|
|
|
{{/allVars}}
|
|
|
|
|
){{/discriminator}}{{#parent}}{{^serializableModel}}{{^parcelizeModels}} : {{{parent}}}{{#isMap}}(){{/isMap}}{{#isArray}}(){{/isArray}}{{/parcelizeModels}}{{/serializableModel}}{{/parent}}{{#parent}}{{#serializableModel}}{{^parcelizeModels}} : {{{parent}}}{{#isMap}}(){{/isMap}}{{#isArray}}(){{/isArray}}, Serializable{{/parcelizeModels}}{{/serializableModel}}{{/parent}}{{#parent}}{{^serializableModel}}{{#parcelizeModels}} : {{{parent}}}{{#isMap}}(){{/isMap}}{{#isArray}}(){{/isArray}}, Parcelable{{/parcelizeModels}}{{/serializableModel}}{{/parent}}{{#parent}}{{#serializableModel}}{{#parcelizeModels}} : {{{parent}}}{{#isMap}}(){{/isMap}}{{#isArray}}(){{/isArray}}, Serializable, Parcelable{{/parcelizeModels}}{{/serializableModel}}{{/parent}}{{^parent}}{{#serializableModel}}{{^parcelizeModels}} : Serializable{{/parcelizeModels}}{{/serializableModel}}{{/parent}}{{^parent}}{{^serializableModel}}{{#parcelizeModels}} : Parcelable{{/parcelizeModels}}{{/serializableModel}}{{/parent}}{{^parent}}{{#serializableModel}}{{#parcelizeModels}} : Serializable, Parcelable{{/parcelizeModels}}{{/serializableModel}}{{/parent}}{{#generateRoomModels}}{{#parent}}, {{/parent}}{{^discriminator}}{{^parent}}:{{/parent}} ITransformForStorage<{{classname}}RoomModel>{{/discriminator}}{{/generateRoomModels}}{{#vendorExtensions.x-has-data-class-body}} {
|
|
|
|
|
){{/discriminator}}{{#parent}}{{^serializableModel}}{{^parcelizeModels}} : {{{parent}}}(){{/parcelizeModels}}{{/serializableModel}}{{/parent}}{{#parent}}{{#serializableModel}}{{^parcelizeModels}} : {{{parent}}}(), Serializable{{/parcelizeModels}}{{/serializableModel}}{{/parent}}{{#parent}}{{^serializableModel}}{{#parcelizeModels}} : {{{parent}}}(), Parcelable{{/parcelizeModels}}{{/serializableModel}}{{/parent}}{{#parent}}{{#serializableModel}}{{#parcelizeModels}} : {{{parent}}}(), Serializable, Parcelable{{/parcelizeModels}}{{/serializableModel}}{{/parent}}{{^parent}}{{#serializableModel}}{{^parcelizeModels}} : Serializable{{/parcelizeModels}}{{/serializableModel}}{{/parent}}{{^parent}}{{^serializableModel}}{{#parcelizeModels}} : Parcelable{{/parcelizeModels}}{{/serializableModel}}{{/parent}}{{^parent}}{{#serializableModel}}{{#parcelizeModels}} : Serializable, Parcelable{{/parcelizeModels}}{{/serializableModel}}{{/parent}}{{#generateRoomModels}}{{#parent}}, {{/parent}}{{^discriminator}}{{^parent}}:{{/parent}} ITransformForStorage<{{classname}}RoomModel>{{/discriminator}}{{/generateRoomModels}}{{#vendorExtensions.x-has-data-class-body}} {
|
|
|
|
|
{{/vendorExtensions.x-has-data-class-body}}
|
|
|
|
|
{{#generateRoomModels}}
|
|
|
|
|
companion object { }
|
|
|
|
|
@@ -147,3 +151,13 @@ import {{packageName}}.infrastructure.ITransformForStorage
|
|
|
|
|
{{#vendorExtensions.x-has-data-class-body}}
|
|
|
|
|
}
|
|
|
|
|
{{/vendorExtensions.x-has-data-class-body}}
|
|
|
|
|
{{#discriminator}}
|
|
|
|
|
|
|
|
|
|
internal object {{classname}}Serializer : JsonContentPolymorphicSerializer<{{classname}}>({{classname}}::class) {
|
|
|
|
|
override fun selectDeserializer(element: JsonElement) = when {
|
|
|
|
|
{{#mappedModels}}
|
|
|
|
|
"{{mappingName}}" in element.jsonObject["{{discriminatorName}}"].toString() -> {{modelName}}.serializer()
|
|
|
|
|
{{/mappedModels}}
|
|
|
|
|
else -> {{classname}}.serializer()
|
|
|
|
|
}
|
|
|
|
|
}{{/discriminator}}
|