dry_serialization 0.4.4.1 → 0.4.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a362cbf5323852dddb9104b617f76efd6288bbecb351a56b614cf0c6fd084250
4
- data.tar.gz: a5e62c311423e5a8265448f9caa20685cf7b2a0d93d6395dd82eef9913fb4b44
3
+ metadata.gz: 6722956e8906a82b85c3cf64a9ce275882d217c28f674003d410fa36195cfd13
4
+ data.tar.gz: b6881b357536253f4dd37ff059de7e4dcb01ec3cd6e77cc79d62a0c4b17ac60c
5
5
  SHA512:
6
- metadata.gz: d342355ee030f28689dc0fc496020f69e3be986b782c154cc101f9bb3b628e44ca22ade883d64a6a58be1f47aa763d9bdfafc1609dac4f7e6fb6d6d49613d82f
7
- data.tar.gz: 8c31a0f9f14265bb47d688e6eae8b9aac459c467252384ba5eb609d0c5efe830c20e107abe23aa04e746b5bd4a8b3a019e12c01c594b848cc2b5562ce617770f
6
+ metadata.gz: b5a6afddeca50b3fd6baacf423375178354f33482edb81acd2c18693269fd1f07d0ffbd01bf03c4ff15a559e45d06080550efdeb842215e372d9f7212666aab6
7
+ data.tar.gz: 4fa61e7c736019154a8d70191459756168c6d8154cb6254517e9715f192bfe93a9851a67e775fdf7b404af47f8122a95babd95e87ccb89b59e3790a23f09e7b0
@@ -1,69 +1,71 @@
1
1
  module DrySerialization
2
- module Deserializable
3
-
4
- def deserialized_payload(base_params, object = nil)
5
- attrs = attributes(base_params)
6
- id = dig_id(base_params, object)
7
- attrs.merge!(id: id) if id
8
-
9
- build_nested_relationships(attrs, base_params)
10
- end
11
-
12
- private
13
-
14
- def build_nested_relationships(attrs, base_params)
15
- relations = relationships(base_params)
16
- attrs.merge!(transform_object_values(relations))
17
- end
18
-
19
- def transform_object_values(relations)
20
- relations.to_h.each_with_object({}) do |(key, data), acc|
21
- key = "#{key}_attributes" unless key.end_with?('_attributes')
22
- acc[key] ||= transform_relationships_to_get_attributes(data)
23
- transform_nested_relationships_to_get_attributes(acc[key], data)
2
+ module Concerns
3
+ module Deserializable
4
+
5
+ def deserialized_payload(base_params, object = nil)
6
+ attrs = attributes(base_params)
7
+ id = dig_id(base_params, object)
8
+ attrs.merge!(id: id) if id
9
+
10
+ build_nested_relationships(attrs, base_params)
24
11
  end
25
- end
26
-
27
- def transform_nested_relationships_to_get_attributes(parent_relation_hash, data)
28
- nested_relationships = data[:data].respond_to?(:key?) ? relationships(data) : nil
29
- return unless nested_relationships
30
-
31
- nested_relationships.each do |(relation, rel_data)|
32
- hash = { "#{relation}_attributes": transform_relationships_to_get_attributes(rel_data) }
33
- parent_relation_hash.merge!(hash)
12
+
13
+ private
14
+
15
+ def build_nested_relationships(attrs, base_params)
16
+ relations = relationships(base_params)
17
+ attrs.merge!(transform_object_values(relations))
34
18
  end
35
- end
36
-
37
- def transform_relationships_to_get_attributes(object)
38
- case object[:data]
39
- when Hash
40
- object[:attributes] || object.dig(:data, :attributes)
41
- when Array
42
- object[:data].map do |e|
43
- attrs = transform_relationships_to_get_attributes({ data: e })
44
- attrs.merge!(transform_object_values(e[:relationships]))
45
- end
46
- else
47
- return
19
+
20
+ def transform_object_values(relations)
21
+ relations.to_h.each_with_object({}) do |(key, data), acc|
22
+ key = "#{key}_attributes" unless key.end_with?('_attributes')
23
+ acc[key] ||= transform_relationships_to_get_attributes(data)
24
+ transform_nested_relationships_to_get_attributes(acc[key], data)
25
+ end
48
26
  end
49
- end
50
-
51
- def dig_id(base_params, object)
52
- return unless object
53
27
 
54
- base_params.dig(:data, :id)
55
- send("#{object}_id")
56
- rescue
57
- nil
58
- end
59
-
60
- def attributes(base_params)
61
- base_params.dig(:data, :attributes)
62
- end
63
-
64
- def relationships(base_params)
65
- base_params.dig(:data, :relationships)
28
+ def transform_nested_relationships_to_get_attributes(parent_relation_hash, data)
29
+ nested_relationships = data[:data].respond_to?(:key?) ? relationships(data) : nil
30
+ return unless nested_relationships
31
+
32
+ nested_relationships.each do |(relation, rel_data)|
33
+ hash = { "#{relation}_attributes": transform_relationships_to_get_attributes(rel_data) }
34
+ parent_relation_hash.merge!(hash)
35
+ end
36
+ end
37
+
38
+ def transform_relationships_to_get_attributes(object)
39
+ case object[:data]
40
+ when Hash
41
+ object[:attributes] || object.dig(:data, :attributes)
42
+ when Array
43
+ object[:data].map do |e|
44
+ attrs = transform_relationships_to_get_attributes({ data: e })
45
+ attrs.merge!(transform_object_values(e[:relationships]))
46
+ end
47
+ else
48
+ return
49
+ end
50
+ end
51
+
52
+ def dig_id(base_params, object)
53
+ return unless object
54
+
55
+ base_params.dig(:data, :id)
56
+ send("#{object}_id")
57
+ rescue
58
+ nil
59
+ end
60
+
61
+ def attributes(base_params)
62
+ base_params.dig(:data, :attributes)
63
+ end
64
+
65
+ def relationships(base_params)
66
+ base_params.dig(:data, :relationships)
67
+ end
68
+
66
69
  end
67
-
68
70
  end
69
71
  end
@@ -1,3 +1,3 @@
1
1
  module DrySerialization
2
- VERSION = "0.4.4.1"
2
+ VERSION = "0.4.4.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry_serialization
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4.1
4
+ version: 0.4.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Heft
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-23 00:00:00.000000000 Z
11
+ date: 2020-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler