store 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- 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
|