|
2 | 2 | {{$typeName := .TypeName -}} |
3 | 3 | {{$discriminator := .Schema.Discriminator}} |
4 | 4 | {{$properties := .Schema.Properties -}} |
| 5 | + {{$numberOfUnionTypes := len .Schema.UnionElements -}} |
5 | 6 | {{range .Schema.UnionElements}} |
6 | 7 | {{$element := . -}} |
7 | 8 | // As{{ .Method }} returns the union data inside the {{$typeName}} as a {{.}} |
|
14 | 15 | // From{{ .Method }} overwrites any union data inside the {{$typeName}} as the provided {{.}} |
15 | 16 | func (t *{{$typeName}}) From{{ .Method }} (v {{.}}) error { |
16 | 17 | {{if $discriminator -}} |
17 | | - {{range $value, $type := $discriminator.Mapping -}} |
18 | | - {{if eq $type $element -}} |
19 | | - {{$hasProperty := false -}} |
20 | | - {{range $properties -}} |
21 | | - {{if eq .GoFieldName $discriminator.PropertyName -}} |
22 | | - t.{{$discriminator.PropertyName}} = "{{$value}}" |
23 | | - {{$hasProperty = true -}} |
| 18 | + {{if eq $numberOfUnionTypes (len $discriminator.Mapping) -}} |
| 19 | + {{range $value, $type := $discriminator.Mapping -}} |
| 20 | + {{if eq $type $element -}} |
| 21 | + {{$hasProperty := false -}} |
| 22 | + {{range $properties -}} |
| 23 | + {{if eq .GoFieldName $discriminator.PropertyName -}} |
| 24 | + t.{{$discriminator.PropertyName}} = "{{$value}}" |
| 25 | + {{$hasProperty = true -}} |
| 26 | + {{end -}} |
24 | 27 | {{end -}} |
| 28 | + {{if not $hasProperty}}v.{{$discriminator.PropertyName}} = "{{$value}}"{{end}} |
25 | 29 | {{end -}} |
26 | | - {{if not $hasProperty}}v.{{$discriminator.PropertyName}} = "{{$value}}"{{end}} |
27 | 30 | {{end -}} |
28 | 31 | {{end -}} |
29 | 32 | {{end -}} |
|
35 | 38 | // Merge{{ .Method }} performs a merge with any union data inside the {{$typeName}}, using the provided {{.}} |
36 | 39 | func (t *{{$typeName}}) Merge{{ .Method }} (v {{.}}) error { |
37 | 40 | {{if $discriminator -}} |
38 | | - {{range $value, $type := $discriminator.Mapping -}} |
39 | | - {{if eq $type $element -}} |
40 | | - {{$hasProperty := false -}} |
41 | | - {{range $properties -}} |
42 | | - {{if eq .GoFieldName $discriminator.PropertyName -}} |
43 | | - t.{{$discriminator.PropertyName}} = "{{$value}}" |
44 | | - {{$hasProperty = true -}} |
| 41 | + {{if eq $numberOfUnionTypes (len $discriminator.Mapping) -}} |
| 42 | + {{range $value, $type := $discriminator.Mapping -}} |
| 43 | + {{if eq $type $element -}} |
| 44 | + {{$hasProperty := false -}} |
| 45 | + {{range $properties -}} |
| 46 | + {{if eq .GoFieldName $discriminator.PropertyName -}} |
| 47 | + t.{{$discriminator.PropertyName}} = "{{$value}}" |
| 48 | + {{$hasProperty = true -}} |
| 49 | + {{end -}} |
45 | 50 | {{end -}} |
| 51 | + {{if not $hasProperty}}v.{{$discriminator.PropertyName}} = "{{$value}}"{{end}} |
46 | 52 | {{end -}} |
47 | | - {{if not $hasProperty}}v.{{$discriminator.PropertyName}} = "{{$value}}"{{end}} |
48 | 53 | {{end -}} |
49 | 54 | {{end -}} |
50 | 55 | {{end -}} |
|
0 commit comments