jsonapi_compliable 0.6.13 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -0
  3. data/docs/Jsonapi/ResourceGenerator.html +325 -0
  4. data/docs/Jsonapi.html +115 -0
  5. data/docs/JsonapiCompliable/Adapters/Abstract.html +1 -1
  6. data/docs/JsonapiCompliable/Adapters/ActiveRecord.html +59 -53
  7. data/docs/JsonapiCompliable/Adapters/ActiveRecordSideloading.html +6 -6
  8. data/docs/JsonapiCompliable/Adapters/Null.html +1 -1
  9. data/docs/JsonapiCompliable/Adapters.html +1 -1
  10. data/docs/JsonapiCompliable/Base.html +113 -117
  11. data/docs/JsonapiCompliable/Deserializer.html +87 -22
  12. data/docs/JsonapiCompliable/Errors/BadFilter.html +1 -1
  13. data/docs/JsonapiCompliable/Errors/StatNotFound.html +1 -1
  14. data/docs/JsonapiCompliable/Errors/UnsupportedPageSize.html +1 -1
  15. data/docs/JsonapiCompliable/Errors/ValidationError.html +1 -1
  16. data/docs/JsonapiCompliable/Errors.html +1 -1
  17. data/docs/JsonapiCompliable/Extensions/BooleanAttribute/ClassMethods.html +1 -1
  18. data/docs/JsonapiCompliable/Extensions/BooleanAttribute.html +1 -1
  19. data/docs/JsonapiCompliable/Extensions/ExtraAttribute/ClassMethods.html +1 -1
  20. data/docs/JsonapiCompliable/Extensions/ExtraAttribute.html +1 -1
  21. data/docs/JsonapiCompliable/Extensions.html +1 -1
  22. data/docs/JsonapiCompliable/Query.html +19 -17
  23. data/docs/JsonapiCompliable/Rails.html +1 -1
  24. data/docs/JsonapiCompliable/Resource.html +311 -220
  25. data/docs/JsonapiCompliable/Scope.html +1 -1
  26. data/docs/JsonapiCompliable/Scoping/Base.html +1 -1
  27. data/docs/JsonapiCompliable/Scoping/DefaultFilter.html +1 -1
  28. data/docs/JsonapiCompliable/Scoping/ExtraFields.html +1 -1
  29. data/docs/JsonapiCompliable/Scoping/Filter.html +1 -1
  30. data/docs/JsonapiCompliable/Scoping/Filterable.html +2 -2
  31. data/docs/JsonapiCompliable/Scoping/Paginate.html +1 -1
  32. data/docs/JsonapiCompliable/Scoping/Sort.html +1 -1
  33. data/docs/JsonapiCompliable/Scoping.html +1 -1
  34. data/docs/JsonapiCompliable/SerializableTempId.html +1 -1
  35. data/docs/JsonapiCompliable/Sideload.html +229 -78
  36. data/docs/JsonapiCompliable/Stats/DSL.html +1 -1
  37. data/docs/JsonapiCompliable/Stats/Payload.html +1 -1
  38. data/docs/JsonapiCompliable/Stats.html +1 -1
  39. data/docs/JsonapiCompliable/Util/FieldParams.html +1 -1
  40. data/docs/JsonapiCompliable/Util/Hash.html +1 -1
  41. data/docs/JsonapiCompliable/Util/IncludeParams.html +1 -1
  42. data/docs/JsonapiCompliable/Util/Persistence.html +1 -1
  43. data/docs/JsonapiCompliable/Util/RelationshipPayload.html +1 -1
  44. data/docs/JsonapiCompliable/Util/RenderOptions.html +1 -1
  45. data/docs/JsonapiCompliable/Util/ValidationResponse.html +1 -1
  46. data/docs/JsonapiCompliable/Util.html +1 -1
  47. data/docs/JsonapiCompliable.html +210 -3
  48. data/docs/_index.html +13 -1
  49. data/docs/class_list.html +1 -1
  50. data/docs/file.README.html +4 -2
  51. data/docs/index.html +4 -2
  52. data/docs/method_list.html +307 -243
  53. data/docs/top-level-namespace.html +2 -2
  54. data/lib/generators/jsonapi/resource_generator.rb +139 -58
  55. data/lib/generators/jsonapi/templates/application_resource.rb.erb +11 -2
  56. data/lib/generators/jsonapi/templates/controller.rb.erb +34 -0
  57. data/lib/generators/jsonapi/templates/destroy_request_spec.rb.erb +1 -1
  58. data/lib/generators/jsonapi/templates/payload.rb.erb +31 -0
  59. data/lib/generators/jsonapi/templates/resource.rb.erb +47 -0
  60. data/lib/generators/jsonapi/templates/serializer.rb.erb +17 -0
  61. data/lib/jsonapi_compliable/adapters/active_record_sideloading.rb +5 -5
  62. data/lib/jsonapi_compliable/resource.rb +11 -5
  63. data/lib/jsonapi_compliable/sideload.rb +40 -11
  64. data/lib/jsonapi_compliable/util/persistence.rb +9 -2
  65. data/lib/jsonapi_compliable/util/relationship_payload.rb +6 -0
  66. data/lib/jsonapi_compliable/util/validation_response.rb +2 -1
  67. data/lib/jsonapi_compliable/version.rb +1 -1
  68. metadata +4 -2
@@ -52,11 +52,18 @@ class JsonapiCompliable::Util::Persistence
52
52
  def update_foreign_key(parent_object, attrs, x)
53
53
  if [:destroy, :disassociate].include?(x[:meta][:method])
54
54
  attrs[x[:foreign_key]] = nil
55
+ update_foreign_type(attrs, x, null: true) if x[:is_polymorphic]
55
56
  else
56
57
  attrs[x[:foreign_key]] = parent_object.send(x[:primary_key])
58
+ update_foreign_type(attrs, x) if x[:is_polymorphic]
57
59
  end
58
60
  end
59
61
 
62
+ def update_foreign_type(attrs, x, null: false)
63
+ grouping_field = x[:sideload].parent.grouping_field
64
+ attrs[grouping_field] = null ? nil : x[:sideload].name
65
+ end
66
+
60
67
  def update_foreign_key_for_parents(parents)
61
68
  parents.each do |x|
62
69
  update_foreign_key(x[:object], @attributes, x)
@@ -88,7 +95,7 @@ class JsonapiCompliable::Util::Persistence
88
95
 
89
96
  def process_has_many(relationships)
90
97
  [].tap do |processed|
91
- iterate(except: [:belongs_to]) do |x|
98
+ iterate(except: [:polymorphic_belongs_to, :belongs_to]) do |x|
92
99
  yield x
93
100
  x[:object] = x[:sideload].resource
94
101
  .persist_with_relationships(x[:meta], x[:attributes], x[:relationships])
@@ -99,7 +106,7 @@ class JsonapiCompliable::Util::Persistence
99
106
 
100
107
  def process_belongs_to(relationships)
101
108
  [].tap do |processed|
102
- iterate(only: [:belongs_to]) do |x|
109
+ iterate(only: [:polymorphic_belongs_to, :belongs_to]) do |x|
103
110
  x[:object] = x[:sideload].resource
104
111
  .persist_with_relationships(x[:meta], x[:attributes], x[:relationships])
105
112
  processed << x
@@ -43,8 +43,14 @@ module JsonapiCompliable
43
43
  end
44
44
 
45
45
  def payload_for(sideload, relationship_payload)
46
+ if sideload.polymorphic?
47
+ type = relationship_payload[:meta][:jsonapi_type]
48
+ sideload = sideload.polymorphic_child_for_type(type)
49
+ end
50
+
46
51
  {
47
52
  sideload: sideload,
53
+ is_polymorphic: !sideload.parent.nil?,
48
54
  primary_key: sideload.primary_key,
49
55
  foreign_key: sideload.foreign_key,
50
56
  attributes: relationship_payload[:attributes],
@@ -33,7 +33,8 @@ class JsonapiCompliable::Util::ValidationResponse
33
33
  private
34
34
 
35
35
  def valid_object?(object)
36
- object.respond_to?(:errors) && object.errors.blank?
36
+ !object.respond_to?(:errors) ||
37
+ (object.respond_to?(:errors) && object.errors.blank?)
37
38
  end
38
39
 
39
40
  def all_valid?(model, deserialized_params)
@@ -1,3 +1,3 @@
1
1
  module JsonapiCompliable
2
- VERSION = "0.6.13"
2
+ VERSION = "0.7.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jsonapi_compliable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.13
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lee Richmond
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2017-05-25 00:00:00.000000000 Z
12
+ date: 2017-07-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: jsonapi-serializable
@@ -139,6 +139,8 @@ files:
139
139
  - bin/console
140
140
  - bin/rspec
141
141
  - bin/setup
142
+ - docs/Jsonapi.html
143
+ - docs/Jsonapi/ResourceGenerator.html
142
144
  - docs/JsonapiCompliable.html
143
145
  - docs/JsonapiCompliable/Adapters.html
144
146
  - docs/JsonapiCompliable/Adapters/Abstract.html