Skip to content

Commit 09ca9a6

Browse files
committed
adding support for relationships with class_names specified, fixing import statements to not allow duplicates and not include a self import
1 parent 6b30eaa commit 09ca9a6

File tree

1 file changed

+13
-10
lines changed

1 file changed

+13
-10
lines changed

lib/adapters/angular/angular2_jsonapi.rb

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,38 +13,41 @@ def generate
1313

1414
exports << "export * from 'models/#{model}.model';"
1515
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}"
1717
data_store_imports << model.classify
1818

1919
push_attributes = []
20-
model_imports = []
20+
model_imports = {}
2121
model_relationships = []
2222
model_attributes = []
2323

2424
sample_model = model.classify.constantize.new
2525
serializer_type = "#{model}_serializer".classify.constantize
2626
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 }
2928
associations += serializer.forced_relationships if serializer_type.method_defined? :forced_relationships
3029
associations.each do |assoc|
3130
relationship = assoc
3231
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+
3437
if serializer_type.method_defined? "#{assoc}_types".to_sym
3538
types = serializer.send("#{assoc}_types").map { |type| type.to_s }
3639
relataionship_types = types.map { |type| "_#{type}#{type_suffix}" }.join(" | ")
3740
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';"
3942
end
4043
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';"
4245
end
4346

4447
relation = is_singular?(relationship) ? "@BelongsTo" : "@HasMany"
4548

4649
model_relationships << " #{relation}(#{serialized_name(relationship, "key")})\n" +
47-
" #{relationship.camelize(:lower)}: #{relataionship_types};"
50+
" #{relationship.camelize(:lower)}: #{relataionship_types}#{type_suffix};"
4851

4952
end
5053

@@ -87,7 +90,7 @@ def generate
8790
:file => "models/#{model}.model.ts",
8891
:attributes => model_attributes.join("\n\n"),
8992
: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"),
9194
:classname => model.classify })
9295
end
9396

@@ -108,7 +111,7 @@ def is_singular?(str)
108111
end
109112

110113
def serialized_name(key, property = "serializedName")
111-
key.include?("_") ? "{ #{property}: '#{underscore(key)}' }" : ""
114+
key.include?("_") ? "{ #{property}: '#{key}' }" : "" # underscore(key)
112115
end
113116

114117
end

0 commit comments

Comments
 (0)