@@ -13,38 +13,41 @@ def generate
13
13
14
14
exports << "export * from 'models/#{ model } .model';"
15
15
machine_exports << "export * from 'models/machine/_#{ model } .model';"
16
- data_store_models << " '#{ underscore ( model . pluralize ) } ': #{ model . classify } "
16
+ data_store_models << " '#{ model . pluralize } ': #{ model . classify } "
17
17
data_store_imports << model . classify
18
18
19
19
push_attributes = [ ]
20
- model_imports = [ ]
20
+ model_imports = { }
21
21
model_relationships = [ ]
22
22
model_attributes = [ ]
23
23
24
24
sample_model = model . classify . constantize . new
25
25
serializer_type = "#{ model } _serializer" . classify . constantize
26
26
serializer = serializer_type . new ( sample_model )
27
-
28
- associations = serializer . associations . map { |assoc | assoc . name . to_s }
27
+ associations = sample_model . serialized_relationships . map { |assoc | assoc . to_s } # serializer.associations.map{ |assoc| assoc.name.to_s }
29
28
associations += serializer . forced_relationships if serializer_type . method_defined? :forced_relationships
30
29
associations . each do |assoc |
31
30
relationship = assoc
32
31
type_suffix = is_singular? ( relationship ) ? "" : "[]"
33
- relataionship_types = "_#{ relationship . singularize . classify } #{ type_suffix } "
32
+ relataionship_types = "_#{ relationship . singularize . classify } " #{type_suffix}
33
+
34
+ relection_options = sample_model . relationship_reflection ( relationship ) . options
35
+ relataionship_types = "_#{ relection_options [ :class_name ] . singularize . classify } " if relection_options [ :class_name ] . present? #{type_suffix}
36
+
34
37
if serializer_type . method_defined? "#{ assoc } _types" . to_sym
35
38
types = serializer . send ( "#{ assoc } _types" ) . map { |type | type . to_s }
36
39
relataionship_types = types . map { |type | "_#{ type } #{ type_suffix } " } . join ( " | " )
37
40
types . each do |t |
38
- model_imports << "import { _#{ t . singularize . classify } } from 'models/machine/_#{ t . singularize . downcase } .model';"
41
+ model_imports [ t . singularize . classify ] = "import { _#{ t . singularize . classify } } from 'models/machine/_#{ t . singularize . downcase } .model';"
39
42
end
40
43
else
41
- model_imports << "import { _#{ relationship . singularize . classify } } from 'models/machine/_ #{ relationship . singularize } .model';"
44
+ model_imports [ relataionship_types . singularize . classify ] = "import { _#{ relataionship_types . singularize . classify } } from 'models/machine/#{ relataionship_types . singularize . downcase } .model';"
42
45
end
43
46
44
47
relation = is_singular? ( relationship ) ? "@BelongsTo" : "@HasMany"
45
48
46
49
model_relationships << " #{ relation } (#{ serialized_name ( relationship , "key" ) } )\n " +
47
- " #{ relationship . camelize ( :lower ) } : #{ relataionship_types } ;"
50
+ " #{ relationship . camelize ( :lower ) } : #{ relataionship_types } #{ type_suffix } ;"
48
51
49
52
end
50
53
@@ -87,7 +90,7 @@ def generate
87
90
:file => "models/#{ model } .model.ts" ,
88
91
:attributes => model_attributes . join ( "\n \n " ) ,
89
92
:relationships => model_relationships . join ( "\n \n " ) ,
90
- :imports => model_imports . join ( "\n " ) ,
93
+ :imports => model_imports . select { | key , value | key . to_s != model . classify . to_s } . map { | key , value | value } . join ( "\n " ) ,
91
94
:classname => model . classify } )
92
95
end
93
96
@@ -108,7 +111,7 @@ def is_singular?(str)
108
111
end
109
112
110
113
def serialized_name ( key , property = "serializedName" )
111
- key . include? ( "_" ) ? "{ #{ property } : '#{ underscore ( key ) } ' }" : ""
114
+ key . include? ( "_" ) ? "{ #{ property } : '#{ key } ' }" : "" # underscore(key)
112
115
end
113
116
114
117
end
0 commit comments