data_broker 0.2.1 → 0.2.2

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