1+ {% macro sub_schema(property ) %}{% if property .sub_schema %}{% if property .type == ' array' %}List< {{property .sub_schema | caseUcfirst }}>{% else %}{{property .sub_schema | caseUcfirst }}{% endif %}{% else %}{{property .type | typeName }}{% endif %}{% endmacro %}
2+ package {{ sdk .namespace | caseDot }}.models
3+
4+ /// {{ definition .description }}
5+ data class {{ definition .name | caseUcfirst }}(
6+ {% for property in definition .properties %}
7+ {% if property .required %}val{% else%}var{% endif %} {{ property .name | escapeKeyword | removeDollarSign }}: {{_self.sub_schema (property )}}{% if not property .required %}? = {{ property .default }}{% endif %}{% if not loop .last or (loop .last and definition .additionalProperties ) %},{% endif %}
8+
9+ {% endfor %}
10+ {% if definition .additionalProperties %}
11+ val data: Map<String , Any >
12+ {% endif %}
13+ ) {
14+ companion object {
15+ fun from(map: Map<String , Any >) = {{ definition .name | caseUcfirst }}(
16+ {% for property in definition .properties %}
17+ {{ property .name | escapeKeyword | removeDollarSign }} = {% if property .sub_schema %}{% if property .type == ' array' %}(map["{{ property .name | escapeDollarSign }}"] as List<Map <String , Any >>).map { {{property .sub_schema | caseUcfirst }}.from(map = it) }{% else %}{{property .sub_schema | caseUcfirst }}.from(map = map["{{property .name | escapeDollarSign }}"] as Map<String , Any >){% endif %}{% else %}map["{{ property .name | escapeDollarSign }}"] as{% if not property .required %}?{% endif %} {{ _self.sub_schema (property ) }}{% endif %}{% if not loop .last or (loop .last and definition .additionalProperties ) %},{% endif %}
18+
19+ {% endfor %}
20+ {% if definition .additionalProperties %}
21+ data = map
22+ {% endif %}
23+ )
24+ }
25+
26+ fun toMap(): Map<String , Any > = mapOf(
27+ {% for property in definition .properties %}
28+ "{{ property .name | escapeDollarSign }}" to {% if property .sub_schema %}{% if property .type == ' array' %}{{property .name | escapeKeyword | removeDollarSign }}.map { it.toMap() }{% else %}{{property .name | escapeKeyword | removeDollarSign }}.toMap(){% endif %}{% else %}{{property .name | escapeKeyword | removeDollarSign }}{% endif %} as Any{% if not loop .last or (loop .last and definition .additionalProperties ) %},{% endif %}
29+
30+ {% endfor %}
31+ {% if definition .additionalProperties %}
32+ "data" to data
33+ {% endif %}
34+ )
35+ {% if definition .additionalProperties %}
36+
37+ fun <T > convertTo(fromJson: (Map<String , Any >) -> T): T {
38+ return fromJson(data)
39+ }
40+ {% endif %}
41+ {% for property in definition .properties %}
42+ {% if property .sub_schema %}
43+ {% for def in spec .definitions %}
44+ {% if def .name == property .sub_schema and def .additionalProperties and property .type == ' array' %}
45+
46+ fun <T > convertTo(fromJson: (Map<String , Any >) -> T) =
47+ {{property .name | removeDollarSign }}.map { it.convertTo(fromJson = fromJson) }
48+ {% endif %}
49+ {% endfor %}
50+ {% endif %}
51+ {% endfor %}
52+ }
0 commit comments