@@ -121,40 +121,8 @@ impl Default for {{classname}} {
121
121
{{!-- for non-enum schemas --}}
122
122
{{^isEnum}}
123
123
{{^discriminator}}
124
- {{#composedSchemas}}
125
- {{#oneOf}}
126
- {{#-first}}
127
- {{! Model with composedSchemas.oneOf - generate enum}}
128
- #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
129
- #[serde(untagged)]
130
- pub enum {{classname}} {
131
- {{/-first}}
132
- {{/oneOf}}
133
- {{/composedSchemas}}
134
- {{#composedSchemas}}
135
- {{#oneOf}}
136
- {{#description}}
137
- /// {{{.}}}
138
- {{/description}}
139
- {{{name}}}({{#isModel}}{{^avoidBoxedModels}}Box<{{/avoidBoxedModels}}{{/isModel}}{{{dataType}}}{{#isModel}}{{^avoidBoxedModels}}>{{/avoidBoxedModels}}{{/isModel}}),
140
- {{/oneOf}}
141
- {{/composedSchemas}}
142
- {{#composedSchemas}}
143
- {{#oneOf}}
144
- {{#-last}}
145
- }
146
-
147
- impl Default for {{classname}} {
148
- fn default() -> Self {
149
- {{#oneOf}}{{#-first}}Self::{{{name}}}(Default::default()){{/-first}}{{/oneOf}}
150
- }
151
- }
152
- {{/-last}}
153
- {{/oneOf}}
154
- {{^oneOf}}
155
- {{! composedSchemas exists but no oneOf - generate normal struct}}
156
124
{{#vendorExtensions.x-rust-has-byte-array}}#[serde_as]
157
- {{/vendorExtensions.x-rust-has-byte-array}}#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
125
+ {{/vendorExtensions.x-rust-has-byte-array}}{{#oneOf.isEmpty}} #[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
158
126
pub struct {{{classname}}} {
159
127
{{#vars}}
160
128
{{#description}}
@@ -204,62 +172,29 @@ impl {{{classname}}} {
204
172
}
205
173
}
206
174
}
207
- {{/oneOf}}
208
- {{/composedSchemas}}
209
- {{^composedSchemas}}
210
- {{! Normal struct without composedSchemas}}
211
- {{#vendorExtensions.x-rust-has-byte-array}}#[serde_as]
212
- {{/vendorExtensions.x-rust-has-byte-array}}#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
213
- pub struct {{{classname}}} {
214
- {{#vars}}
175
+ {{/oneOf.isEmpty}}
176
+ {{^oneOf.isEmpty}}
177
+ {{! TODO: add other vars that are not part of the oneOf}}
178
+ {{#description}}
179
+ /// {{{.}}}
180
+ {{/description}}
181
+ #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
182
+ #[serde(untagged)]
183
+ pub enum {{classname}} {
184
+ {{#composedSchemas.oneOf}}
215
185
{{#description}}
216
186
/// {{{.}}}
217
187
{{/description}}
218
- {{#isByteArray}}
219
- {{#vendorExtensions.isMandatory}}#[serde_as(as = "serde_with::base64::Base64")]{{/vendorExtensions.isMandatory}}{{^vendorExtensions.isMandatory}}#[serde_as(as = "{{^serdeAsDoubleOption}}Option{{/serdeAsDoubleOption}}{{#serdeAsDoubleOption}}super::DoubleOption{{/serdeAsDoubleOption}}<serde_with::base64::Base64>")]{{/vendorExtensions.isMandatory}}
220
- {{/isByteArray}}
221
- #[serde(rename = "{{{baseName}}}"{{^required}}{{#isNullable}}, default{{^isByteArray}}, with = "::serde_with::rust::double_option"{{/isByteArray}}{{/isNullable}}{{/required}}{{^required}}, skip_serializing_if = "Option::is_none"{{/required}}{{#required}}{{#isNullable}}, deserialize_with = "Option::deserialize"{{/isNullable}}{{/required}})]
222
- pub {{{name}}}: {{!
223
- ### Option Start
224
- }}{{#isNullable}}Option<{{/isNullable}}{{^required}}Option<{{/required}}{{!
225
- ### Enums
226
- }}{{#isEnum}}{{#isArray}}{{#uniqueItems}}std::collections::HashSet<{{/uniqueItems}}{{^uniqueItems}}Vec<{{/uniqueItems}}{{/isArray}}{{{enumName}}}{{#isArray}}>{{/isArray}}{{/isEnum}}{{!
227
- ### Non-Enums Start
228
- }}{{^isEnum}}{{!
229
- ### Models
230
- }}{{#isModel}}{{^avoidBoxedModels}}Box<{{/avoidBoxedModels}}{{{dataType}}}{{^avoidBoxedModels}}>{{/avoidBoxedModels}}{{/isModel}}{{!
231
- ### Primative datatypes
232
- }}{{^isModel}}{{#isByteArray}}Vec<u8>{{/isByteArray}}{{^isByteArray}}{{{dataType}}}{{/isByteArray}}{{/isModel}}{{!
233
- ### Non-Enums End
234
- }}{{/isEnum}}{{!
235
- ### Option End (and trailing comma)
236
- }}{{#isNullable}}>{{/isNullable}}{{^required}}>{{/required}},
237
- {{/vars}}
188
+ {{{name}}}({{#isModel}}{{^avoidBoxedModels}}Box<{{/avoidBoxedModels}}{{/isModel}}{{{dataType}}}{{#isModel}}{{^avoidBoxedModels}}>{{/avoidBoxedModels}}{{/isModel}}),
189
+ {{/composedSchemas.oneOf}}
238
190
}
239
191
240
- impl {{{classname}}} {
241
- {{#description}}
242
- /// {{{.}}}
243
- {{/description}}
244
- pub fn new({{#requiredVars}}{{{name}}}: {{!
245
- ### Option Start
246
- }}{{#isNullable}}Option<{{/isNullable}}{{!
247
- ### Enums
248
- }}{{#isEnum}}{{#isArray}}{{#uniqueItems}}std::collections::HashSet<{{/uniqueItems}}{{^uniqueItems}}Vec<{{/uniqueItems}}{{/isArray}}{{{enumName}}}{{#isArray}}>{{/isArray}}{{/isEnum}}{{!
249
- ### Non-Enums
250
- }}{{^isEnum}}{{#isByteArray}}Vec<u8>{{/isByteArray}}{{^isByteArray}}{{{dataType}}}{{/isByteArray}}{{/isEnum}}{{!
251
- ### Option End
252
- }}{{#isNullable}}>{{/isNullable}}{{!
253
- ### Comma for next arguement
254
- }}{{^-last}}, {{/-last}}{{/requiredVars}}) -> {{{classname}}} {
255
- {{{classname}}} {
256
- {{#vars}}
257
- {{{name}}}{{^required}}: None{{/required}}{{#required}}{{#isModel}}{{^avoidBoxedModels}}: {{^isNullable}}Box::new({{{name}}}){{/isNullable}}{{#isNullable}}if let Some(x) = {{{name}}} {Some(Box::new(x))} else {None}{{/isNullable}}{{/avoidBoxedModels}}{{/isModel}}{{/required}},
258
- {{/vars}}
259
- }
192
+ impl Default for {{classname}} {
193
+ fn default() -> Self {
194
+ {{#composedSchemas.oneOf}}{{#-first}}Self::{{{name}}}(Default::default()){{/-first}}{{/composedSchemas.oneOf}}
260
195
}
261
196
}
262
- {{/composedSchemas }}
197
+ {{/oneOf.isEmpty }}
263
198
{{/discriminator}}
264
199
{{/isEnum}}
265
200
{{!-- for properties that are of enum type --}}
0 commit comments