avromatic 0.6.0 → 0.6.1

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
  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