avromatic 0.6.0 → 0.6.1

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
  SHA1:
3
- metadata.gz: de19fe8a35a25945998d529185b935c339926e83
4
- data.tar.gz: 53e4b0e212c8694a090e1d6a2b786475838aea7c
3
+ metadata.gz: c9c8ba9dd84cfb14ff267ee892bb04520e35040a
4
+ data.tar.gz: b1409149a06107891b63e6fc6e5f0658d9eb6efd
5
5
  SHA512:
6
- metadata.gz: 37e7ce89d805df9e6e5fe6dee3a579c97382230171daee9f96831b4156355f30174ae09685841586e7f9c19ae5630ae3fe0f0df5808bd66f2f771bfabceb6c78
7
- data.tar.gz: ff6cb0b5a19804b6763a763c48d431baecc31c20677d72a908df94b0afe0ff0ae183b3eea7755c8a81e28bba79c2fa2b1bf81f7b603093ab379a7d562896df6a
6
+ metadata.gz: 85b08d69e19609620f4775330e1291a4839d3fa4f4e8ee0fbf4b9fd0654128b006e3c0abe891b830842c7694670881c81bfa147b82f7b7ecd1d44d64cf7ac244
7
+ data.tar.gz: d9b64dbc85139e8d9f0ca5f6645e5f0ae6077c2c82fc080c4ee76060f20f3de5209805cab2b8954722569c11c48b9ac5fb0377f321b8bf80a33edd42353fb299
data/CHANGELOG.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # avromatic changelog
2
2
 
3
+ ## v0.6.1
4
+ - Fix serialization of array and map types that contain nested models.
5
+
3
6
  ## v0.6.0
4
7
  - Require `avro_turf` v0.7.0 or later.
5
8
 
data/avromatic.gemspec CHANGED
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
30
30
  spec.add_development_dependency 'rspec', '~> 3.0'
31
31
  spec.add_development_dependency 'simplecov'
32
32
  spec.add_development_dependency 'webmock'
33
- spec.add_development_dependency 'avro-builder', '>= 0.3.2'
33
+ spec.add_development_dependency 'avro-builder', '>= 0.7.0'
34
34
  # For FakeSchemaRegistryServer
35
35
  spec.add_development_dependency 'sinatra'
36
36
  spec.add_development_dependency 'salsify_rubocop', '~> 0.40.1'
@@ -1,4 +1,5 @@
1
1
  require 'avromatic/model/passthrough_serializer'
2
+ require 'active_support/core_ext/hash/transform_values'
2
3
 
3
4
  module Avromatic
4
5
  module Model
@@ -9,7 +10,8 @@ module Avromatic
9
10
  extend ActiveSupport::Concern
10
11
 
11
12
  module Encode
12
- delegate :avro_serializer, :datum_writer, :datum_reader, to: :class
13
+ delegate :avro_serializer, :datum_writer, :datum_reader, :attribute_set,
14
+ to: :class
13
15
  private :avro_serializer, :datum_writer, :datum_reader
14
16
 
15
17
  def avro_raw_value
@@ -21,8 +23,6 @@ module Avromatic
21
23
  avro_raw_encode(key_attributes_for_avro, :key)
22
24
  end
23
25
 
24
- protected
25
-
26
26
  def value_attributes_for_avro
27
27
  avro_hash(value_avro_field_names)
28
28
  end
@@ -33,10 +33,24 @@ module Avromatic
33
33
  avro_hash(key_avro_field_names)
34
34
  end
35
35
 
36
+ def array_of_models?(key)
37
+ attribute_set[key].is_a?(Virtus::Attribute::Collection) &&
38
+ attribute_set[key].member_type.primitive.include?(Avromatic::Model::Attributes)
39
+ end
40
+
41
+ def hash_of_models?(key)
42
+ attribute_set[key].is_a?(Virtus::Attribute::Hash) &&
43
+ attribute_set[key].value_type.primitive.include?(Avromatic::Model::Attributes)
44
+ end
45
+
36
46
  def avro_hash(fields)
37
47
  attributes.slice(*fields).each_with_object(Hash.new) do |(key, value), result|
38
48
  result[key.to_s] = if value.is_a?(Avromatic::Model::Attributes)
39
49
  value.value_attributes_for_avro
50
+ elsif array_of_models?(key)
51
+ value.map(&:value_attributes_for_avro)
52
+ elsif hash_of_models?(key)
53
+ value.transform_values(&:value_attributes_for_avro)
40
54
  else
41
55
  avro_serializer[key].call(value)
42
56
  end
@@ -1,3 +1,3 @@
1
1
  module Avromatic
2
- VERSION = '0.6.0'.freeze
2
+ VERSION = '0.6.1'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avromatic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Salsify Engineering
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-06-01 00:00:00.000000000 Z
11
+ date: 2016-06-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: avro
@@ -156,14 +156,14 @@ dependencies:
156
156
  requirements:
157
157
  - - ">="
158
158
  - !ruby/object:Gem::Version
159
- version: 0.3.2
159
+ version: 0.7.0
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - ">="
165
165
  - !ruby/object:Gem::Version
166
- version: 0.3.2
166
+ version: 0.7.0
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: sinatra
169
169
  requirement: !ruby/object:Gem::Requirement