store 0.0.7 → 0.0.8
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/README.md +5 -0
- data/lib/store.rb +10 -0
- data/lib/store/repo.rb +4 -0
- data/lib/store/resolver.rb +10 -0
- data/lib/store/resolver/data_mapper.rb +1 -9
- data/lib/store/resolver/entity_mapper.rb +1 -9
- data/lib/store/version.rb +1 -1
- data/spec/store_repo_spec.rb +20 -0
- data/spec/store_spec.rb +21 -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: 15236ed7a3059649b7fc2d2a176f301f0f2e86a6
|
4
|
+
data.tar.gz: dcd61648154c9dd8ed07ef6109fdfb69a3793020
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b72660068c02629603b61c5d866d0372d16bbc1eda9f68ec7d9a884a2586fd109d68e67a40ac3c5db44abfab794b3b370ae3ac073db9ca43cf53f43c726b243a
|
7
|
+
data.tar.gz: 7ca0022f25758605563cf494bbe9b65d2fe5fd0cb2baac9873d0414e5e627267cec9411aeaa20ef66e1e188c8fadad875eaa92d19391e2778826b3ec6ecf9f97
|
data/README.md
CHANGED
@@ -27,6 +27,11 @@ Or install it yourself as:
|
|
27
27
|
|
28
28
|
See [example.rb](https://github.com/holderbaum/store/blob/master/example.rb) for capabilities of the current implementation.
|
29
29
|
|
30
|
+
## DataMapper
|
31
|
+
|
32
|
+
* [Memory](https://github.com/janowiesniak/store-memory)
|
33
|
+
* [ActiveRecord](https://github.com/janowiesniak/store-active_record)
|
34
|
+
|
30
35
|
## Contributing
|
31
36
|
|
32
37
|
1. Fork it
|
data/lib/store.rb
CHANGED
@@ -106,6 +106,12 @@ class Store
|
|
106
106
|
entities
|
107
107
|
end
|
108
108
|
|
109
|
+
def reference(entity)
|
110
|
+
reference = find_entity_reference(entity)
|
111
|
+
raise "Unknown entity #{entity.inspect}" unless reference
|
112
|
+
build_reference entity, reference if reference
|
113
|
+
end
|
114
|
+
|
109
115
|
private
|
110
116
|
def save_entity(entity)
|
111
117
|
return nil unless entity
|
@@ -121,6 +127,10 @@ class Store
|
|
121
127
|
data_mapper.update(reference, extract_entity_attributes(entity))
|
122
128
|
end
|
123
129
|
|
130
|
+
build_reference entity, reference
|
131
|
+
end
|
132
|
+
|
133
|
+
def build_reference(entity, reference)
|
124
134
|
Ref.new(extract_entity_class_name(entity), reference)
|
125
135
|
end
|
126
136
|
|
data/lib/store/repo.rb
CHANGED
data/lib/store/resolver.rb
CHANGED
@@ -3,6 +3,16 @@ require 'store/resolver/data_mapper'
|
|
3
3
|
|
4
4
|
module Resolver
|
5
5
|
|
6
|
+
def extract_entity_class_name(obj)
|
7
|
+
if obj.kind_of? Store::Ref
|
8
|
+
extract_entity_class_name_from_ref(obj)
|
9
|
+
elsif obj.kind_of? Store::Query
|
10
|
+
extract_entity_class_name_from_query(obj)
|
11
|
+
else
|
12
|
+
extract_entity_class_name_from_object(obj)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
6
16
|
def extract_entity_class_name_from_ref(ref)
|
7
17
|
ref.entity_type
|
8
18
|
end
|
@@ -7,15 +7,7 @@ module Resolver
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def resolve_data_mapper(obj)
|
10
|
-
@mapping[
|
11
|
-
if obj.kind_of? Store::Ref
|
12
|
-
extract_entity_class_name_from_ref(obj)
|
13
|
-
elsif obj.kind_of? Store::Query
|
14
|
-
extract_entity_class_name_from_query(obj)
|
15
|
-
else
|
16
|
-
extract_entity_class_name_from_object(obj)
|
17
|
-
end
|
18
|
-
]
|
10
|
+
@mapping[extract_entity_class_name(obj)]
|
19
11
|
end
|
20
12
|
|
21
13
|
end
|
@@ -8,15 +8,7 @@ module Resolver
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def resolve_entity_mapper(obj)
|
11
|
-
@mapping[
|
12
|
-
if obj.kind_of? Store::Ref
|
13
|
-
extract_entity_class_name_from_ref(obj)
|
14
|
-
elsif obj.kind_of? Store::Query
|
15
|
-
extract_entity_class_name_from_query(obj)
|
16
|
-
else
|
17
|
-
extract_entity_class_name_from_object(obj)
|
18
|
-
end
|
19
|
-
].new(@store)
|
11
|
+
@mapping[extract_entity_class_name(obj)].new(@store)
|
20
12
|
end
|
21
13
|
|
22
14
|
end
|
data/lib/store/version.rb
CHANGED
data/spec/store_repo_spec.rb
CHANGED
@@ -68,4 +68,24 @@ describe 'Store::Repo' do
|
|
68
68
|
assert_equal :result, result
|
69
69
|
end
|
70
70
|
|
71
|
+
describe 'private' do
|
72
|
+
it 'delegeates query to @store' do
|
73
|
+
store.expect :query, :result, [:arg]
|
74
|
+
|
75
|
+
result = repo.send :query, :arg
|
76
|
+
|
77
|
+
assert store.verify
|
78
|
+
assert_equal :result, result
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'delegeates reference to @store' do
|
82
|
+
store.expect :reference, :result, [:arg]
|
83
|
+
|
84
|
+
result = repo.send :reference, :arg
|
85
|
+
|
86
|
+
assert store.verify
|
87
|
+
assert_equal :result, result
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
71
91
|
end
|
data/spec/store_spec.rb
CHANGED
@@ -134,11 +134,10 @@ describe 'store' do
|
|
134
134
|
|
135
135
|
describe 'reload' do
|
136
136
|
it 'delegates to load with reference' do
|
137
|
-
|
138
|
-
data_mapper.expect(:insert, ref, [entity_hash])
|
137
|
+
data_mapper.expect(:insert, :ref22, [entity_hash])
|
139
138
|
store.save(entity)
|
140
139
|
|
141
|
-
data_mapper.expect(:single_find, {'email' => '1', 'gender' => '2'}, [
|
140
|
+
data_mapper.expect(:single_find, {'email' => '1', 'gender' => '2'}, [:ref22])
|
142
141
|
result = store.reload(entity)
|
143
142
|
|
144
143
|
assert data_mapper.verify
|
@@ -194,6 +193,25 @@ describe 'store' do
|
|
194
193
|
end
|
195
194
|
end
|
196
195
|
|
196
|
+
describe 'reference' do
|
197
|
+
it 'returns the reference for the given entity' do
|
198
|
+
ref = Store::Ref.new('name', :ref22)
|
199
|
+
data_mapper.expect(:insert, :ref22, [entity_hash])
|
200
|
+
store.save(entity)
|
201
|
+
|
202
|
+
result = store.reference(entity)
|
203
|
+
assert_equal ref, result
|
204
|
+
end
|
205
|
+
|
206
|
+
it 'raises if reference not known' do
|
207
|
+
error = assert_raises RuntimeError do
|
208
|
+
store.reference(entity)
|
209
|
+
end
|
210
|
+
|
211
|
+
assert_match(/unknown/i, error.message)
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
197
215
|
describe 'building' do
|
198
216
|
Project = Struct.new(:name, :due_date)
|
199
217
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: store
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jakob Holderbaum
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-08-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|