data_broker 0.2.3 → 0.3.0
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 +4 -4
- data/lib/data_broker/mapper.rb +46 -15
- data/lib/data_broker/version.rb +1 -1
- data/spec/mapper_spec.rb +3 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d3e930d1eecce8f3489041add31efa05f55fe37f
|
4
|
+
data.tar.gz: 6498d2b77f56db76ee2e8c2877ec7fe2a00726c9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4dbeaa7a41acd547750e23dc2bb82265c147be4910915fee5761e5b4b34010ef68c1cde031c8465118f6914504e78b630e9546549bdb44cce3199fcafeb18bc8
|
7
|
+
data.tar.gz: 2d762759043a9a4b27d0dd97122c99c0275ff719861dc34ad7e18febda376bd1be31791f0780da4d19fdafe42173fcc9cc04b7f78a9931da0a83f77936773a71
|
data/lib/data_broker/mapper.rb
CHANGED
@@ -13,28 +13,57 @@ module DataBroker
|
|
13
13
|
def self.included(descendant)
|
14
14
|
super
|
15
15
|
descendant.extend(ClassMethods)
|
16
|
+
descendant.send(:include, InstanceMethods)
|
16
17
|
end
|
17
18
|
|
18
19
|
module ClassMethods
|
19
|
-
attr_accessor :mapping, :children, :parents
|
20
|
+
attr_accessor :mapping, :children, :parents, :record, :model
|
20
21
|
|
21
|
-
def
|
22
|
-
|
22
|
+
def record
|
23
|
+
construct_instance.record
|
23
24
|
end
|
24
25
|
|
25
|
-
def
|
26
|
-
|
26
|
+
def model
|
27
|
+
construct_instance.model
|
27
28
|
end
|
28
29
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
instance_variable_set(ivar, value)
|
33
|
-
end
|
30
|
+
def all(eager_load: false)
|
31
|
+
construct_instance.all(:eager_load => eager_load)
|
32
|
+
end
|
34
33
|
|
35
|
-
|
36
|
-
|
37
|
-
|
34
|
+
def find(id, eager_load: true)
|
35
|
+
construct_instance.find(id, :eager_load => eager_load)
|
36
|
+
end
|
37
|
+
|
38
|
+
def where(eager_load: true, **conds)
|
39
|
+
construct_instance.where(:eager_load => true, **conds)
|
40
|
+
end
|
41
|
+
|
42
|
+
def save(model, eager_load: true)
|
43
|
+
construct_instance.save(model, :eager_load => eager_load)
|
44
|
+
end
|
45
|
+
|
46
|
+
def destroy(model, eager_load: false)
|
47
|
+
construct_instance.destroy(model, :eager_load => eager_load)
|
48
|
+
end
|
49
|
+
|
50
|
+
def construct_instance
|
51
|
+
self.new(
|
52
|
+
:mapping => mapping, :parents => parents, :children => children,
|
53
|
+
:record => @record, :model => @model
|
54
|
+
)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
module InstanceMethods
|
59
|
+
attr_reader :mapping, :parents, :children, :record, :model
|
60
|
+
|
61
|
+
def initialize(mapping:, parents:, children:, record: nil, model: nil)
|
62
|
+
self.mapping = mapping
|
63
|
+
self.parents = parents || {}
|
64
|
+
self.children = children || {}
|
65
|
+
self.record = record || infer(:record)
|
66
|
+
self.model = model || infer(:model)
|
38
67
|
end
|
39
68
|
|
40
69
|
def all(eager_load: false)
|
@@ -100,6 +129,8 @@ module DataBroker
|
|
100
129
|
|
101
130
|
private
|
102
131
|
|
132
|
+
attr_writer :mapping, :parents, :children, :record, :model
|
133
|
+
|
103
134
|
def load_parents!(obj, record)
|
104
135
|
self.parents.each do |model_ref, record_ref|
|
105
136
|
parent_record = record.send(record_ref)
|
@@ -114,7 +145,7 @@ module DataBroker
|
|
114
145
|
@load_parent ||= {}
|
115
146
|
@load_parent[parent_record] ||= -> {
|
116
147
|
mapper = mapper_for(model)
|
117
|
-
mapper.records_to_objects(parent_record, :eager_load => false).first
|
148
|
+
mapper.construct_instance.records_to_objects(parent_record, :eager_load => false).first
|
118
149
|
}.call
|
119
150
|
end
|
120
151
|
|
@@ -152,7 +183,7 @@ module DataBroker
|
|
152
183
|
end
|
153
184
|
|
154
185
|
def inferred_basename
|
155
|
-
@inferred_basename ||= self.to_s.underscore.sub(/_mapper$/, "")
|
186
|
+
@inferred_basename ||= self.class.to_s.underscore.sub(/_mapper$/, "")
|
156
187
|
.singularize.camelize
|
157
188
|
end
|
158
189
|
|
data/lib/data_broker/version.rb
CHANGED
data/spec/mapper_spec.rb
CHANGED
@@ -91,8 +91,8 @@ describe DataBroker::Mapper do
|
|
91
91
|
|
92
92
|
it "eager loads if requested" do
|
93
93
|
3.times { mapper.record.create }
|
94
|
-
|
95
|
-
|
94
|
+
expect_any_instance_of(mapper).to receive(:load_parents!).exactly(3).times
|
95
|
+
expect_any_instance_of(mapper).to receive(:load_children!).once
|
96
96
|
|
97
97
|
mapper.all(:eager_load => true)
|
98
98
|
end
|
@@ -268,7 +268,7 @@ describe DataBroker::Mapper do
|
|
268
268
|
end
|
269
269
|
|
270
270
|
it "eager loads if requests" do
|
271
|
-
|
271
|
+
expect_any_instance_of(mapper).to receive(:load_children!).once
|
272
272
|
model = mapper.save(mapper.model.new)
|
273
273
|
mapper.destroy(model, :eager_load => true)
|
274
274
|
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.
|
4
|
+
version: 0.3.0
|
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-
|
11
|
+
date: 2014-01-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: virtus
|