hanami-model 1.1.0.rc1 → 1.1.0

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: ac1d93bb8d958c05f22b8a5f14e0072c0c7df823
4
- data.tar.gz: 369794a0d62a1e06d55181564bc15693e4b0ab46
3
+ metadata.gz: baa67e9dd75be68366898314a21f009c72516403
4
+ data.tar.gz: 25c3f3892d14131966a71dbe18a9339b5b3c1b69
5
5
  SHA512:
6
- metadata.gz: e01d7c581d03cecc7eeee81cef39abd574581e015d677ce623ddf0339a336b98f434995583b6008a9fabd275fe41a764ea4c872309c66b2148ff6aef134a102e
7
- data.tar.gz: '08df89ae8621493379cd07cd7c5f78d7ac380319b7312d33d8f26d57eaa5065549773ed6bf5cbbb965838235fc93c2d9b41cac96c98124e9fbd74ad1157c6815'
6
+ metadata.gz: 9244838d4936d70bd1a24d4e8cce9944b91527d96999dee94eb0d5a2bf8d39b62350197cd4ff8f0bd0d10e154687850401b2c92aa89ae54d1a506aa6d069a8f3
7
+ data.tar.gz: 80b5cef9d91ea29db8312eae0a7659b03333cf49a34a35d0b5e08086af020f1ea0a49f29aa8517aac5716c252edea6ad35f1ad23b0dd1fec0c0e5b1a3945234d
data/CHANGELOG.md CHANGED
@@ -1,6 +1,10 @@
1
1
  # Hanami::Model
2
2
  A persistence layer for Hanami
3
3
 
4
+ ## v1.1.0 - 2017-10-25
5
+ ### Fixed
6
+ - [Luca Guidi] Ensure associations to always accept objects that are serializable into `::Hash`
7
+
4
8
  ## v1.1.0.rc1 - 2017-10-16
5
9
  ### Added
6
10
  - [Marcello Rocha] Added support for associations aliasing via `:as` option (`has_many :users, through: :comments, as: :authors`)
@@ -28,7 +32,7 @@ A persistence layer for Hanami
28
32
 
29
33
  ## v1.0.4 - 2017-10-14
30
34
  ### Fixed
31
- - [Nikita Shilnikov] Keep the dependency on `dry-sql` at `~> 1.3`, which is compatible with `dry-types` `~> 0.11.0`
35
+ - [Nikita Shilnikov] Keep the dependency on `rom-sql` at `~> 1.3`, which is compatible with `dry-types` `~> 0.11.0`
32
36
  - [Nikita Shilnikov] Ensure to write Postgres JSON (`PGJSON`) type for nested associated records
33
37
  - [Nikita Shilnikov] Ensure `Repository#select` to work with `Hanami::Model::MappedRelation`
34
38
 
data/hanami-model.gemspec CHANGED
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.require_paths = ['lib']
19
19
  spec.required_ruby_version = '>= 2.3.0'
20
20
 
21
- spec.add_runtime_dependency 'hanami-utils', '1.1.0.rc1'
22
- spec.add_runtime_dependency 'rom', '~> 3.3', '>= 3.3.2'
21
+ spec.add_runtime_dependency 'hanami-utils', '~> 1.1'
22
+ spec.add_runtime_dependency 'rom', '~> 3.3', '>= 3.3.3'
23
23
  spec.add_runtime_dependency 'rom-sql', '~> 1.3', '>= 1.3.5'
24
24
  spec.add_runtime_dependency 'rom-repository', '~> 1.4'
25
25
  spec.add_runtime_dependency 'dry-types', '~> 0.11.0'
@@ -27,5 +27,5 @@ Gem::Specification.new do |spec|
27
27
 
28
28
  spec.add_development_dependency 'bundler'
29
29
  spec.add_development_dependency 'rake', '~> 12'
30
- spec.add_development_dependency 'rspec', '~> 3.6'
30
+ spec.add_development_dependency 'rspec', '~> 3.7'
31
31
  end
@@ -50,7 +50,7 @@ module Hanami
50
50
  # @api private
51
51
  def create(data)
52
52
  entity.new(command(:create, aggregate(target), use: [:timestamps])
53
- .call(data))
53
+ .call(serialize(data)))
54
54
  rescue => e
55
55
  raise Hanami::Model::Error.for(e)
56
56
  end
@@ -59,7 +59,7 @@ module Hanami
59
59
  # @api private
60
60
  def add(data)
61
61
  command(:create, relation(target), use: [:timestamps])
62
- .call(associate(data))
62
+ .call(associate(serialize(data)))
63
63
  rescue => e
64
64
  raise Hanami::Model::Error.for(e)
65
65
  end
@@ -202,6 +202,10 @@ module Hanami
202
202
  def __new__(new_scope)
203
203
  self.class.new(repository, source, target, subject, new_scope)
204
204
  end
205
+
206
+ def serialize(data)
207
+ Utils::Hash.deep_serialize(data)
208
+ end
205
209
  end
206
210
  end
207
211
  end
@@ -1,3 +1,5 @@
1
+ require "hanami/utils/hash"
2
+
1
3
  module Hanami
2
4
  module Model
3
5
  module Associations
@@ -49,14 +51,14 @@ module Hanami
49
51
 
50
52
  def create(data)
51
53
  entity.new(
52
- command(:create, aggregate(target), use: [:timestamps]).call(data)
54
+ command(:create, aggregate(target), use: [:timestamps]).call(serialize(data))
53
55
  )
54
56
  rescue => e
55
57
  raise Hanami::Model::Error.for(e)
56
58
  end
57
59
 
58
60
  def add(data)
59
- command(:create, relation(target), use: [:timestamps]).call(associate(data))
61
+ command(:create, relation(target), use: [:timestamps]).call(associate(serialize(data)))
60
62
  rescue => e
61
63
  raise Hanami::Model::Error.for(e)
62
64
  end
@@ -65,7 +67,7 @@ module Hanami
65
67
  command(:update, relation(target), use: [:timestamps])
66
68
  .by_pk(
67
69
  one.public_send(relation(target).primary_key)
68
- ).call(data)
70
+ ).call(serialize(data))
69
71
  rescue => e
70
72
  raise Hanami::Model::Error.for(e)
71
73
  end
@@ -78,7 +80,7 @@ module Hanami
78
80
  def replace(data)
79
81
  repository.transaction do
80
82
  delete
81
- add(data)
83
+ add(serialize(data))
82
84
  end
83
85
  end
84
86
 
@@ -151,6 +153,12 @@ module Hanami
151
153
  result = result.where(foreign_key => subject.fetch(primary_key)) unless subject.nil?
152
154
  result.as(Model::MappedRelation.mapper_name)
153
155
  end
156
+
157
+ # @since 1.1.0
158
+ # @api private
159
+ def serialize(data)
160
+ Utils::Hash.deep_serialize(data)
161
+ end
154
162
  end
155
163
  end
156
164
  end
@@ -1,3 +1,5 @@
1
+ require "hanami/utils/hash"
2
+
1
3
  module Hanami
2
4
  module Model
3
5
  module Associations
@@ -5,7 +7,7 @@ module Hanami
5
7
  #
6
8
  # @since 0.7.0
7
9
  # @api private
8
- class ManyToMany
10
+ class ManyToMany # rubocop:disable Metrics/ClassLength
9
11
  # @since 0.7.0
10
12
  # @api private
11
13
  def self.schema_type(entity)
@@ -67,12 +69,13 @@ module Hanami
67
69
  __new__(scope.where(condition))
68
70
  end
69
71
 
72
+ # Return the association table object. Would need an aditional query to return the entity
73
+ #
70
74
  # @since 1.1.0
71
75
  # @api private
72
- # Return the association table object. Would need an aditional query to return the entity
73
76
  def add(*data)
74
77
  command(:create, relation(through), use: [:timestamps])
75
- .call(associate(data.map(&:to_h)))
78
+ .call(associate(serialize(data)))
76
79
  rescue => e
77
80
  raise Hanami::Model::Error.for(e)
78
81
  end
@@ -186,6 +189,14 @@ module Hanami
186
189
  def __new__(new_scope)
187
190
  self.class.new(repository, source, target, subject, new_scope)
188
191
  end
192
+
193
+ # @since 1.1.0
194
+ # @api private
195
+ def serialize(data)
196
+ data.map do |d|
197
+ Utils::Hash.deep_serialize(d)
198
+ end
199
+ end
189
200
  end
190
201
  end
191
202
  end
@@ -3,6 +3,6 @@ module Hanami
3
3
  # Defines the version
4
4
  #
5
5
  # @since 0.1.0
6
- VERSION = '1.1.0.rc1'.freeze
6
+ VERSION = '1.1.0'.freeze
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanami-model
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0.rc1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-16 00:00:00.000000000 Z
11
+ date: 2017-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hanami-utils
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '='
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.1.0.rc1
19
+ version: '1.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '='
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.1.0.rc1
26
+ version: '1.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rom
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -33,7 +33,7 @@ dependencies:
33
33
  version: '3.3'
34
34
  - - ">="
35
35
  - !ruby/object:Gem::Version
36
- version: 3.3.2
36
+ version: 3.3.3
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '3.3'
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: 3.3.2
46
+ version: 3.3.3
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rom-sql
49
49
  requirement: !ruby/object:Gem::Requirement
@@ -140,14 +140,14 @@ dependencies:
140
140
  requirements:
141
141
  - - "~>"
142
142
  - !ruby/object:Gem::Version
143
- version: '3.6'
143
+ version: '3.7'
144
144
  type: :development
145
145
  prerelease: false
146
146
  version_requirements: !ruby/object:Gem::Requirement
147
147
  requirements:
148
148
  - - "~>"
149
149
  - !ruby/object:Gem::Version
150
- version: '3.6'
150
+ version: '3.7'
151
151
  description: A persistence framework with entities and repositories
152
152
  email:
153
153
  - me@lucaguidi.com
@@ -215,9 +215,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
215
215
  version: 2.3.0
216
216
  required_rubygems_version: !ruby/object:Gem::Requirement
217
217
  requirements:
218
- - - ">"
218
+ - - ">="
219
219
  - !ruby/object:Gem::Version
220
- version: 1.3.1
220
+ version: '0'
221
221
  requirements: []
222
222
  rubyforge_project:
223
223
  rubygems_version: 2.6.13