@@ -54,7 +54,19 @@ open class {{ definition | modelType(spec) | raw }}: Codable {
5454 let container = try decoder.container(keyedBy: CodingKeys.self)
5555
5656 {%~ for property in definition .properties %}
57+ {%~ if property .enum %}
58+ {%~ if property .required %}
59+ self.{{ property .name | escapeSwiftKeyword | removeDollarSign }} = {{ property | propertyType(spec ) | raw }}(rawValue: try container.decode(String.self, forKey: .{{ property .name | escapeSwiftKeyword | removeDollarSign }}))!
60+ {%~ else %}
61+ if let {{ property .name | escapeSwiftKeyword | removeDollarSign }}String = try container.decodeIfPresent(String.self, forKey: .{{ property .name | escapeSwiftKeyword | removeDollarSign }}) {
62+ self.{{ property .name | escapeSwiftKeyword | removeDollarSign }} = {{ property | propertyType(spec ) | raw }}(rawValue: {{ property .name | escapeSwiftKeyword | removeDollarSign }}String)
63+ } else {
64+ self.{{ property .name | escapeSwiftKeyword | removeDollarSign }} = nil
65+ }
66+ {%~ endif %}
67+ {%~ else %}
5768 self.{{ property .name | escapeSwiftKeyword | removeDollarSign }} = try container.decode{% if not property .required %}IfPresent{% endif %}({{ property | propertyType(spec ) | raw }}.self, forKey: .{{ property .name | escapeSwiftKeyword | removeDollarSign }})
69+ {%~ endif %}
5870 {%~ endfor %}
5971 {%~ if definition .additionalProperties %}
6072 self.data = try container.decode(T.self, forKey: .data)
@@ -65,7 +77,7 @@ open class {{ definition | modelType(spec) | raw }}: Codable {
6577 var container = encoder.container(keyedBy: CodingKeys.self)
6678
6779 {%~ for property in definition .properties %}
68- try container.encode{% if not property .required %}IfPresent{% endif %}({{ property .name | escapeSwiftKeyword | removeDollarSign }}, forKey: .{{ property .name | escapeSwiftKeyword | removeDollarSign }})
80+ try container.encode{% if not property .required %}IfPresent{% endif %}({{ property .name | escapeSwiftKeyword | removeDollarSign }}{% if property . enum %}.rawValue{% endif %} , forKey: .{{ property .name | escapeSwiftKeyword | removeDollarSign }})
6981 {%~ endfor %}
7082 {%~ if definition .additionalProperties %}
7183 try container.encode(data, forKey: .data)
0 commit comments