goa_model_gen 0.8.2 → 0.8.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/goa_model_gen/cli.rb +1 -0
- data/lib/goa_model_gen/go_struct.rb +11 -2
- data/lib/goa_model_gen/templates/converter.go.erb +14 -4
- data/lib/goa_model_gen/templates/model.go.erb +9 -3
- data/lib/goa_model_gen/templates/model_base.go.erb +15 -0
- data/lib/goa_model_gen/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 207c463abc5bf1e3b04bed480d759deb7bde42e54a8470d673ed90f3c48d3989
|
4
|
+
data.tar.gz: 90bfe7129e9b8bf5bf1dd0f902d091885d1e9adb09b49a4070533d459f5bd476
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 47235bac3a32610001c1f2cb8c1389f5e5c66471d0cb5f6f6993ab6a7658580bfdc9d288f65ad8f6c0c159925fcd53ed65f01b56b19962f10c50a74d6d76601c
|
7
|
+
data.tar.gz: 41d81eb3469f45625b1bdd60dbc963f1f7b26534dc3f6dcd83ec3f5e746104508f003b7d71a9a2e8544c5217e59a5ee92a36bab93f3a43331ca91d896acfafd6
|
data/lib/goa_model_gen/cli.rb
CHANGED
@@ -43,6 +43,7 @@ module GoaModelGen
|
|
43
43
|
setup
|
44
44
|
new_generator.process({
|
45
45
|
'templates/validator.go.erb' => File.join(cfg.model_dir, 'validator.go'),
|
46
|
+
'templates/model_base.go.erb' => File.join(cfg.model_dir, "model_base.go"),
|
46
47
|
})
|
47
48
|
load_types_for(paths) do |source_file|
|
48
49
|
new_generator.tap{|g| g.source_file = source_file }.process({
|
@@ -43,6 +43,9 @@ module GoaModelGen
|
|
43
43
|
end
|
44
44
|
alias_method :assignable_with?, :==
|
45
45
|
|
46
|
+
def pointer?
|
47
|
+
kinds.last == 'ptr'
|
48
|
+
end
|
46
49
|
def pointer_of?(other)
|
47
50
|
(pkg_path == other.pkg_path) &&
|
48
51
|
(name == other.name) &&
|
@@ -59,10 +62,16 @@ module GoaModelGen
|
|
59
62
|
end
|
60
63
|
|
61
64
|
def method_part_name
|
65
|
+
parts = kinds.dup
|
66
|
+
parts.pop if parts.last == 'ptr'
|
62
67
|
parts =
|
63
|
-
|
64
|
-
[name] +
|
68
|
+
(parts.first == 'struct' || pkg_path.present?) ?
|
69
|
+
[name] + parts[1..-1] : parts
|
65
70
|
parts.map(&:camelize).join
|
66
71
|
end
|
72
|
+
|
73
|
+
def defined_in_model?
|
74
|
+
pkg_path =~ /\/model\z/
|
75
|
+
end
|
67
76
|
end
|
68
77
|
end
|
@@ -37,6 +37,7 @@ func CopyFrom<%= model.name %>PayloadToModel(payload *gen.<%= payload.name %>, m
|
|
37
37
|
pf_name = (mf.tags['payload'] || mf.name).downcase
|
38
38
|
pf = payload.fields.detect{|pf| pf.name.downcase == pf_name }
|
39
39
|
assigned_field_names.push(pf.name) if pf
|
40
|
+
conv_pkg = mf.type.defined_in_model? ? 'model' : 'converters'
|
40
41
|
if pf.nil?
|
41
42
|
-%>
|
42
43
|
// <%= mf.name %> not found in <%= payload.name %> fields
|
@@ -47,13 +48,20 @@ func CopyFrom<%= model.name %>PayloadToModel(payload *gen.<%= payload.name %>, m
|
|
47
48
|
m.<%= mf.name %> = *payload.<%= pf.name %>
|
48
49
|
}
|
49
50
|
<%- elsif !pf.type.needs_error_to_convert_to?(mf.type) -%>
|
50
|
-
m.<%= mf.name %> =
|
51
|
+
m.<%= mf.name %> = <%= conv_pkg %>.<%= pf.type.method_part_name %>To<%= mf.type.method_part_name %>(payload.<%= pf.name %>)
|
51
52
|
<%- else -%>
|
52
|
-
|
53
|
+
<%- meth = "#{pf.type.method_part_name}To#{mf.type.method_part_name}" -%>
|
54
|
+
<%- if pf.type.pointer? -%>
|
55
|
+
if payload.<%= pf.name %> != nil {
|
56
|
+
<%- end -%>
|
57
|
+
if v, err := <%= conv_pkg %>.<%= meth %>(<%= '*' if pf.type.pointer? %>payload.<%= pf.name %>); err != nil {
|
53
58
|
return err
|
54
59
|
} else {
|
55
60
|
m.<%= mf.name %> = v
|
56
61
|
}
|
62
|
+
<%- if pf.type.pointer? -%>
|
63
|
+
}
|
64
|
+
<%- end -%>
|
57
65
|
<%- end -%>
|
58
66
|
<%- end -%>
|
59
67
|
<%-
|
@@ -87,6 +95,7 @@ func <%= model.name %>ModelToResult(m *model.<%= model.name %>) (*gen.<%= result
|
|
87
95
|
rf_name = (mf.tags['result'] || mf.name).downcase
|
88
96
|
rf = result.fields.detect{|rf| rf.name.downcase == rf_name }
|
89
97
|
assigned_field_names.push(rf.name) if rf
|
98
|
+
conv_pkg = mf.type.defined_in_model? ? 'model' : 'converters'
|
90
99
|
if rf.nil?
|
91
100
|
-%>
|
92
101
|
// <%= mf.name %> not found in <%= result.name %> fields
|
@@ -95,9 +104,10 @@ func <%= model.name %>ModelToResult(m *model.<%= model.name %>) (*gen.<%= result
|
|
95
104
|
<%- elsif rf.type.pointer_of?(mf.type) -%>
|
96
105
|
r.<%= rf.name %> = &m.<%= mf.name %>
|
97
106
|
<%- elsif !mf.type.needs_error_to_convert_to?(rf.type) -%>
|
98
|
-
r.<%= rf.name %> =
|
107
|
+
r.<%= rf.name %> = <%= conv_pkg %>.<%= mf.type.method_part_name %>To<%= rf.type.method_part_name %>(m.<%= mf.name %>)
|
99
108
|
<%- else -%>
|
100
|
-
|
109
|
+
<%- meth = "#{mf.type.method_part_name}To#{rf.type.method_part_name}" -%>
|
110
|
+
if v, err := <%= conv_pkg %>.<%= meth %>(m.<%= mf.name %>); err != nil {
|
101
111
|
return err
|
102
112
|
} else {
|
103
113
|
r.<%= rf.name %> = v
|
@@ -53,15 +53,21 @@ var <%= type.name %>NameToValue = map[string]<%= type.name %>{
|
|
53
53
|
<%- end -%>
|
54
54
|
}
|
55
55
|
|
56
|
-
func
|
56
|
+
func StringTo<%= type.name %>(s string) (<%= type.name %>, error) {
|
57
57
|
val, ok := <%= type.name %>NameToValue[s]
|
58
58
|
if ok {
|
59
|
-
return
|
59
|
+
return val, nil
|
60
60
|
} else {
|
61
|
-
|
61
|
+
err := &InvalidEnumName{Name: s}
|
62
|
+
return <%= type.name %><%= type.enum_map[type.enum_map.keys.first].camelize %>, err
|
62
63
|
}
|
63
64
|
}
|
64
65
|
|
66
|
+
|
67
|
+
func <%= type.name %>ToString(v <%= type.name %>) string {
|
68
|
+
return v.String()
|
69
|
+
}
|
70
|
+
|
65
71
|
<%- end -%>
|
66
72
|
|
67
73
|
<%- end -%>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<%- user_editable -%>
|
2
|
+
<%- package "model" -%>
|
3
|
+
|
4
|
+
<%-
|
5
|
+
import "fmt"
|
6
|
+
-%>
|
7
|
+
|
8
|
+
type InvalidEnumName struct {
|
9
|
+
Name string
|
10
|
+
// Options []string
|
11
|
+
}
|
12
|
+
|
13
|
+
func (e *InvalidEnumName) Error() string {
|
14
|
+
return fmt.Sprintf("Invalid enum name %q", e.Name)
|
15
|
+
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: goa_model_gen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- akm
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-02-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -158,6 +158,7 @@ files:
|
|
158
158
|
- lib/goa_model_gen/templates/converter_base.go.erb
|
159
159
|
- lib/goa_model_gen/templates/goon.go.erb
|
160
160
|
- lib/goa_model_gen/templates/model.go.erb
|
161
|
+
- lib/goa_model_gen/templates/model_base.go.erb
|
161
162
|
- lib/goa_model_gen/templates/model_validation.go.erb
|
162
163
|
- lib/goa_model_gen/templates/store.go.erb
|
163
164
|
- lib/goa_model_gen/templates/store_validation.go.erb
|