You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(go-sdk-generator): generator does not generate enum code correct (#150)
* fix: generator does not generate enum code correct
- enums which aren't definied in a ref within the API spec, were handled like normal strings
* add reserved word mapping: type -> types
// {{{classname}}}{{#lambda.titlecase}}{{nameInCamelCase}}{{/lambda.titlecase}} {{{description}}}{{^description}}the model '{{{classname}}}'{{/description}}
284
+
type {{{classname}}}{{#lambda.titlecase}}{{nameInCamelCase}}{{/lambda.titlecase}} {{dataType}}
var Allowed{{{classname}}}{{#lambda.titlecase}}{{nameInCamelCase}}{{/lambda.titlecase}}EnumValues = []{{{classname}}}{{#lambda.titlecase}}{{nameInCamelCase}}{{/lambda.titlecase}}{
299
+
{{#allowableValues}}
300
+
{{#enumVars}}
301
+
{{{value}}},
302
+
{{/enumVars}}
303
+
{{/allowableValues}}
304
+
}
305
+
306
+
func (v *{{{classname}}}{{#lambda.titlecase}}{{nameInCamelCase}}{{/lambda.titlecase}}) UnmarshalJSON(src []byte) error {
307
+
var value {{dataType}}
308
+
err := json.Unmarshal(src, &value)
309
+
if err != nil {
310
+
return err
311
+
}
312
+
// Allow unmarshalling zero value for testing purposes
for _, existing := range Allowed{{{classname}}}{{#lambda.titlecase}}{{nameInCamelCase}}{{/lambda.titlecase}}EnumValues {
319
+
if existing == enumTypeValue {
320
+
*v = enumTypeValue
321
+
return nil
322
+
}
323
+
}
324
+
325
+
return fmt.Errorf("%+v is not a valid {{classname}}", value)
326
+
}
327
+
328
+
// New{{{classname}}}{{#lambda.titlecase}}{{nameInCamelCase}}{{/lambda.titlecase}}FromValue returns a pointer to a valid {{{classname}}}{{#lambda.titlecase}}{{nameInCamelCase}}{{/lambda.titlecase}}
329
+
// for the value passed as argument, or an error if the value passed is not allowed by the enum
ev := {{{classname}}}{{#lambda.titlecase}}{{nameInCamelCase}}{{/lambda.titlecase}}(v)
332
+
if ev.IsValid() {
333
+
return &ev, nil
334
+
} else {
335
+
return nil, fmt.Errorf("invalid value '%v' for {{{classname}}}{{#lambda.titlecase}}{{nameInCamelCase}}{{/lambda.titlecase}}: valid values are %v", v, Allowed{{{classname}}}{{#lambda.titlecase}}{{nameInCamelCase}}{{/lambda.titlecase}}EnumValues)
336
+
}
337
+
}
338
+
339
+
// IsValid return true if the value is valid for the enum, false otherwise
340
+
func (v {{{classname}}}{{#lambda.titlecase}}{{nameInCamelCase}}{{/lambda.titlecase}}) IsValid() bool {
341
+
for _, existing := range Allowed{{{classname}}}{{#lambda.titlecase}}{{nameInCamelCase}}{{/lambda.titlecase}}EnumValues {
342
+
if existing == v {
343
+
return true
344
+
}
345
+
}
346
+
return false
347
+
}
348
+
349
+
// Ptr returns reference to {{{name}}}{{#lambda.titlecase}}{{nameInCamelCase}}{{/lambda.titlecase}} value
350
+
func (v {{{classname}}}{{#lambda.titlecase}}{{nameInCamelCase}}{{/lambda.titlecase}}) Ptr() *{{{classname}}}{{#lambda.titlecase}}{{nameInCamelCase}}{{/lambda.titlecase}} {
351
+
return &v
352
+
}
353
+
354
+
type Nullable{{{classname}}}{{#lambda.titlecase}}{{nameInCamelCase}}{{/lambda.titlecase}} struct {
355
+
value *{{{classname}}}{{#lambda.titlecase}}{{nameInCamelCase}}{{/lambda.titlecase}}
356
+
isSet bool
357
+
}
358
+
359
+
func (v Nullable{{classname}}{{#lambda.titlecase}}{{nameInCamelCase}}{{/lambda.titlecase}}) Get() *{{classname}}{{#lambda.titlecase}}{{nameInCamelCase}}{{/lambda.titlecase}} {
360
+
return v.value
361
+
}
362
+
363
+
func (v *Nullable{{classname}}{{#lambda.titlecase}}{{nameInCamelCase}}{{/lambda.titlecase}}) Set(val *{{classname}}{{#lambda.titlecase}}{{nameInCamelCase}}{{/lambda.titlecase}}) {
364
+
v.value = val
365
+
v.isSet = true
366
+
}
367
+
368
+
func (v Nullable{{classname}}{{#lambda.titlecase}}{{nameInCamelCase}}{{/lambda.titlecase}}) IsSet() bool {
369
+
return v.isSet
370
+
}
371
+
372
+
func (v *Nullable{{classname}}{{#lambda.titlecase}}{{nameInCamelCase}}{{/lambda.titlecase}}) Unset() {
var {{nameInCamelCase}} {{{classname}}}{{#lambda.titlecase}}{{nameInCamelCase}}{{/lambda.titlecase}} = {{{.}}}
678
+
{{/isEnum}}
679
+
{{^isEnum}}
545
680
{{!we use datatypeWithEnum here, since it will represent the non-nullable name of the datatype, e.g. int64 for NullableInt64}}
546
681
var {{nameInCamelCase}} {{#isInteger}}int64{{/isInteger}}{{#isNumber}}float64{{/isNumber}}{{^isNumber}}{{^isInteger}}{{dataType}}{{/isInteger}}{{/isNumber}} = {{{.}}}
0 commit comments