codegen 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/codegen/sources/active_record.rb +61 -61
- data/lib/codegen/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 93bf3fcac690b8c8b8d66fe1a280dce13b17fca7
|
4
|
+
data.tar.gz: 2c81da512687e32c1348803a627e2dda5495885f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 08da35d85433ec26f4bc93a9c7b9c9d75af59d468c36ca90eb3f83c49c04ae0869de8de2c813287f6605ccaac847cf8e3c1735854108b2e4abecbe665f4806f2
|
7
|
+
data.tar.gz: b708ff6ee6eb9d25936a9b041ff428d1dea5c92f8389bbd0a657ec550ae589b3a71596c66c03d974a57d8b213832326b92dcb27a0a0154c753146dac69d7fc45
|
@@ -18,30 +18,30 @@ module Codegen
|
|
18
18
|
def convert_entity options
|
19
19
|
models = options[:models] || collect_all_models
|
20
20
|
models_and_methods = models.map { |model|
|
21
|
-
|
22
|
-
|
21
|
+
begin
|
22
|
+
{
|
23
23
|
model => {
|
24
24
|
methods: model_methods(model),
|
25
25
|
relations: model_relations(model)
|
26
26
|
}
|
27
|
-
|
28
|
-
|
29
|
-
|
27
|
+
}
|
28
|
+
rescue Exception => e
|
29
|
+
nil
|
30
|
+
end
|
31
|
+
}.filter { |x| x.nil? }
|
32
|
+
|
33
|
+
models_and_methods.map { |mm|
|
34
|
+
model_to_entity(mm)
|
30
35
|
}
|
31
|
-
|
36
|
+
end
|
32
37
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
methods = mm[model][:methods]
|
41
|
-
relations = mm[model][:relations]
|
42
|
-
|
43
|
-
normalized_relations = relations.map { |relation|
|
44
|
-
case relation[:type]
|
38
|
+
def model_to_entity mm
|
39
|
+
model = mm.keys.first
|
40
|
+
methods = mm[model][:methods]
|
41
|
+
relations = mm[model][:relations]
|
42
|
+
|
43
|
+
normalized_relations = relations.map { |relation|
|
44
|
+
case relation[:type]
|
45
45
|
when :has_many, :has_and_belongs_to_many
|
46
46
|
ref = :many
|
47
47
|
when :belongs_to, :has_one
|
@@ -49,60 +49,60 @@ module Codegen
|
|
49
49
|
else
|
50
50
|
puts "WARNING: Unexpected relation type for relation: #{relation[:name]} on class #{model}"
|
51
51
|
ref = :one
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
52
|
+
end
|
53
|
+
|
54
|
+
{
|
55
|
+
cardinality: ref,
|
56
|
+
name: relation[:name],
|
57
|
+
type: relation[:klass]
|
58
|
+
}
|
58
59
|
}
|
59
|
-
}
|
60
60
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
61
|
+
normalized_methods = methods.map { |method|
|
62
|
+
{
|
63
|
+
cardinality: :one,
|
64
|
+
name: method[:name],
|
65
|
+
type: method[:type]
|
66
|
+
}
|
66
67
|
}
|
67
|
-
}
|
68
68
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
69
|
+
begin
|
70
|
+
mname = model.class_name
|
71
|
+
rescue
|
72
|
+
mname = model.to_s
|
73
|
+
end
|
74
74
|
|
75
|
-
|
76
|
-
|
75
|
+
Codegen::Types::Entity.new name: mname, methods: normalized_methods, relations: normalized_relations
|
76
|
+
end
|
77
77
|
|
78
78
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
79
|
+
def collect_all_models
|
80
|
+
begin
|
81
|
+
Rails.application.eager_load! if defined?(Rails)
|
82
|
+
::ActiveRecord::Base.subclasses
|
83
|
+
rescue
|
84
|
+
[]
|
85
|
+
end
|
85
86
|
end
|
86
|
-
end
|
87
87
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
88
|
+
def model_methods model
|
89
|
+
model.columns.map { |column|
|
90
|
+
{
|
91
|
+
type: column.type.to_s,
|
92
|
+
name: column.name
|
93
|
+
}
|
93
94
|
}
|
94
|
-
|
95
|
-
end
|
95
|
+
end
|
96
96
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
97
|
+
def model_relations model
|
98
|
+
model.reflect_on_all_associations.map { |assoc|
|
99
|
+
{
|
100
|
+
type: assoc.macro,
|
101
|
+
name: assoc.name.to_s,
|
102
|
+
klass: assoc.class_name
|
103
|
+
}
|
103
104
|
}
|
104
|
-
|
105
|
+
end
|
105
106
|
end
|
106
107
|
end
|
107
|
-
end
|
108
|
-
end
|
108
|
+
end
|
data/lib/codegen/version.rb
CHANGED