@@ -62,6 +62,9 @@ import java.io.Serializable
6262import { {roomModelPackage} }.{ {classname} }RoomModel
6363import { {packageName} }.infrastructure.ITransformForStorage
6464{ {/generateRoomModels} }
65+ { {#generateModelBuilders} }
66+ import kotlin.properties.Delegates
67+ { {/generateModelBuilders} }
6568
6669/**
6770 * { {{description} }}
@@ -90,13 +93,47 @@ import {{packageName}}.infrastructure.ITransformForStorage
9093@SerialName(value = { {#lambda.doublequote} }{ {{additionalProperties.discriminatorValue} }}{ {/lambda.doublequote} })
9194{ {/additionalProperties.discriminatorValue} }
9295{ {/kotlinx_serialization} }
93- { {#nonPublicApi} }internal { {/nonPublicApi} }{ {^nonPublicApi} }{ {#explicitApi} }public { {/explicitApi} }{ {/nonPublicApi} }{ {#discriminator} }{ {#kotlinx_serialization} }sealed class{ {/kotlinx_serialization} }{ {^kotlinx_serialization} }interface{ {/kotlinx_serialization} }{ {/discriminator} }{ {^discriminator} }{ {#hasVars} }data { {/hasVars} }class{ {/discriminator} } { {classname} }{ {^discriminator} } (
96+ { {#nonPublicApi} }internal { {/nonPublicApi} }{ {^nonPublicApi} }{ {#explicitApi} }public { {/explicitApi} }{ {/nonPublicApi} }{ {#discriminator} }{ {#kotlinx_serialization} }sealed class{ {/kotlinx_serialization} }{ {^kotlinx_serialization} }interface{ {/kotlinx_serialization} }{ {/discriminator} }{ {^discriminator} }{ {#hasVars} }{ {^generateModelBuilders } } data { {/generateModelBuilders } } { {/ hasVars} }class{ {/discriminator} } { {classname} }{ {^discriminator} } { {#generateModelBuilders } }internal constructor { {/generateModelBuilders } } (
9497
9598{ {#allVars} }
9699{ {#required} }{ {> data_class_req_var} }{ {/required} }{ {^required} }{ {> data_class_opt_var} }{ {/required} }{ {^-last} },{ {/-last} }
97100
98101{ {/allVars} }
99102){{/discriminator}}{{#parent}}{{^serializableModel}}{{^parcelizeModels}} : {{{parent}}}{{#isMap}}(){{/isMap}}{{#kotlinx_serialization}}(){{/kotlinx_serialization}}{{#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}} {
103+ { {#generateModelBuilders} }
104+ { {^discriminator} }
105+
106+ /**
107+ * Mutable builder for { {classname} }
108+ */
109+ { {#nonPublicApi} }internal { {/nonPublicApi} }{ {^nonPublicApi} }{ {#explicitApi} }public { {/explicitApi} }{ {/nonPublicApi} }class Builder internal constructor() {
110+ {{#allVars} }
111+ { {#required} }
112+ { {#isPrimitiveType} }
113+ { {#isString} }
114+ lateinit var { {{name} }}: { {{dataType} }}
115+ { {/isString} }
116+ { {^isString} }
117+ var { {{name} }}: { {{dataType} }} by Delegates.notNull()
118+ { {/isString} }
119+ { {/isPrimitiveType} }
120+ { {^isPrimitiveType} }
121+ lateinit var { {{name} }}: { {{dataType} }}
122+ { {/isPrimitiveType} }
123+ { {/required} }
124+ { {^required} }
125+ var { {{name} }}: { {{dataType} }}? = null
126+ { {/required} }
127+ { {/allVars} }
128+
129+ internal fun build(): { {classname} } = { {classname} }(
130+ { {#allVars} }
131+ { {{name} }} = { {{name} }}{ {^-last} },{ {/-last} }
132+ { {/allVars} }
133+ )
134+ }
135+ { {/discriminator} }
136+ { {/generateModelBuilders} }
100137{ {/vendorExtensions.x-has-data-class-body} }
101138{ {#generateRoomModels} }
102139 companion object { }
@@ -387,4 +424,14 @@ import {{packageName}}.infrastructure.ITransformForStorage
387424
388425{ {#vendorExtensions.x-has-data-class-body} }
389426}
427+ { {^discriminator} }
428+ { {#generateModelBuilders} }
429+
430+ /**
431+ * Kotlin DSL for { {classname} }
432+ */
433+ { {#nonPublicApi} }internal { {/nonPublicApi} }{ {^nonPublicApi} }{ {#explicitApi} }public { {/explicitApi} }{ {/nonPublicApi} }fun { {classname} }(block: { {classname} }.Builder.() -> Unit): { {classname} } =
434+ { {classname} }.Builder().apply(block).build()
435+ { {/generateModelBuilders} }
436+ { {/discriminator} }
390437{ {/vendorExtensions.x-has-data-class-body} }
0 commit comments