dry_serialization 0.4.4.1 → 0.4.4.2

Sign up to get free protection for your applications and to get access to all the features.
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