data_broker 0.2.1 → 0.2.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
  SHA1:
3
- metadata.gz: 92b08a7cb73e63a0d6eebc8cfe06f85ce03bba5f
4
- data.tar.gz: 9a7ff3d396bf73b28fb40cba1a67eb251c33cddb
3
+ metadata.gz: efa47ef957de906755498b6ae0f153e142364672
4
+ data.tar.gz: 3d18d6b223a291474a1a75375dca874112cf927f
5
5
  SHA512:
6
- metadata.gz: 017e64e604f99616a4bf08f6dcd887b2f6d24f59fcdaf6bcbace7b0d60ab77e40c4a2609f53981f96958f3a3aefb74b5ff1a2af6e03dc37173f2f55884fb96c5
7
- data.tar.gz: 350da4a150a55351957821d047ab8da7bc37e8d69ae68c90c355de13f3302ecc570bcc0baa7c2cdd9b6748080ef4c3ecc848d0e18834e62f3bec7e1e88a24d58
6
+ metadata.gz: c0bd2f321438ba7e89a3b87f6f96ee23c63f347e5f186129744ec9177376b42ce6ded419f2296a2c0315194116266f3c9c514f00b28b271c0da987d11a39fbac
7
+ data.tar.gz: f4d8e9924a6d49cf3138b34b2c41b2a072cd8d7415154504c8aea0d72a25f00398427016e703bcab311c59c16ed5ecf3e2d2aef2dfc5e4d22b8a4a68a44f4923
@@ -37,33 +37,43 @@ module DataBroker
37
37
  end
38
38
  end
39
39
 
40
- def all
41
- records_to_objects(self.record.all)
40
+ def all(eager_load: false)
41
+ records_to_objects(self.record.all, :eager_load => eager_load)
42
42
  end
43
43
 
44
- def find(id)
44
+ def find(id, eager_load: true)
45
45
  record = self.eager_record.find_by(:id => id)
46
- record.nil? ? nil : records_to_objects(record, :eager_load => true).first
46
+ if record.nil?
47
+ nil
48
+ else
49
+ records_to_objects(record, :eager_load => eager_load).first
50
+ end
47
51
  end
48
52
 
49
- def where(conds)
53
+ def where(eager_load: true, **conds)
50
54
  conds = Hash[conds.map { |key, value| [self.mapping[key], value] }]
51
- records_to_objects(self.eager_record.where(conds), :eager_load => true)
55
+ records_to_objects(
56
+ self.eager_record.where(conds), :eager_load => eager_load
57
+ )
52
58
  end
53
59
 
54
- def save(model)
60
+ def save(model, eager_load: true)
55
61
  record = self.eager_record.find_by(:id => model.id) || self.record.new
56
62
  attributes = Hash[self.mapping.map { |key, value| [value, model[key]] }]
57
63
  attributes.delete(:id)
58
64
  record.attributes = attributes
59
65
 
60
66
  record.save!
61
- records_to_objects(record.reload, :eager_load => true).first
67
+ records_to_objects(record.reload, :eager_load => eager_load).first
62
68
  end
63
69
 
64
- def destroy(model)
70
+ def destroy(model, eager_load: false)
65
71
  record = self.record.find_by(:id => model.id)
66
- record.nil? ? nil : records_to_objects(record.destroy).first
72
+ if record.nil?
73
+ nil
74
+ else
75
+ records_to_objects(record.destroy, :eager_load => false).first
76
+ end
67
77
  end
68
78
 
69
79
  def records_to_objects(records, eager_load: false)
@@ -1,3 +1,3 @@
1
1
  module DataBroker
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
data/spec/mapper_spec.rb CHANGED
@@ -88,6 +88,14 @@ describe DataBroker::Mapper do
88
88
 
89
89
  expect(obj).to be_a(mapper.model)
90
90
  end
91
+
92
+ it "eager loads if requested" do
93
+ 3.times { mapper.record.create }
94
+ expect(mapper).to receive(:load_parents!).exactly(3).times
95
+ expect(mapper).to receive(:load_children!).once
96
+
97
+ mapper.all(:eager_load => true)
98
+ end
91
99
  end
92
100
 
93
101
  describe "#find" do
@@ -130,6 +138,17 @@ describe DataBroker::Mapper do
130
138
  ids = obj.instance_variable_get(:@child_ids)
131
139
  expect(ids).to match_array([id])
132
140
  end
141
+
142
+ it "doesn't eager load if requested" do
143
+ expect(parent_mapper).to_not receive(:load_children!)
144
+ expect(parent_mapper).to_not receive(:load_parents!)
145
+
146
+ parent_id = parent_mapper.record.create.id
147
+ mapper.record.create(
148
+ :child_name => "Bobby", :parent_id => parent_id
149
+ ).id
150
+ parent_mapper.find(parent_id, :eager_load => false)
151
+ end
133
152
  end
134
153
 
135
154
  describe "#where" do
@@ -186,6 +205,16 @@ describe DataBroker::Mapper do
186
205
  ids = obj.instance_variable_get(:@child_ids)
187
206
  expect(ids).to match_array([id])
188
207
  end
208
+
209
+ it "doesn't eager load if requested" do
210
+ expect(parent_mapper).to_not receive(:load_children!)
211
+ expect(parent_mapper).to_not receive(:load_parents!)
212
+ parent_id = parent_mapper.record.create.id
213
+ mapper.record.create(
214
+ :child_name => "Bobby", :parent_id => parent_id
215
+ ).id
216
+ parent_mapper.where(:id => parent_id, :eager_load => false).first
217
+ end
189
218
  end
190
219
 
191
220
  describe "#save" do
@@ -210,6 +239,12 @@ describe DataBroker::Mapper do
210
239
 
211
240
  expect(rt.id).to eq(model.id)
212
241
  end
242
+
243
+ it "doesn't eager load if requested" do
244
+ expect(mapper).to_not receive(:load_children!)
245
+ expect(mapper).to_not receive(:load_parents!)
246
+ mapper.save(mapper.model.new, :eager_load => false)
247
+ end
213
248
  end
214
249
 
215
250
  describe "#destroy" do
@@ -231,5 +266,11 @@ describe DataBroker::Mapper do
231
266
 
232
267
  expect(mapper.find(model.id)).to be_nil
233
268
  end
269
+
270
+ it "eager loads if requests" do
271
+ expect(mapper).to receive(:load_children!).once
272
+ model = mapper.save(mapper.model.new)
273
+ mapper.destroy(model, :eager_load => true)
274
+ end
234
275
  end
235
276
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: data_broker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shane Emmons
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-14 00:00:00.000000000 Z
11
+ date: 2014-01-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: virtus