schron 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/schron/datastore/mongo.rb +21 -9
- data/lib/schron/test/datastore_examples.rb +14 -0
- data/schron.gemspec +1 -1
- 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: 10cd6ff2067f372625bf7fb368d03b3ea0255037
|
4
|
+
data.tar.gz: 7d9240d4e478e53217f8876a61449304344bcb92
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e3e6e8b603afdc7938204ce5e536e0bb87cb0f7922c4d56d7a6458454ede9536cec7208233ba24d15a81a0e9040eadf1de01710f09ba09660b1ba63d6368539c
|
7
|
+
data.tar.gz: 08f8e7ff55ee6cfd119894e93e672d17865796966b89aad4974bfc2add0d37e0fde97aabea1171d0c036b00da204c946fb8fab6d40d0451f1c602bca1c4ed661
|
@@ -170,23 +170,24 @@ module Schron
|
|
170
170
|
selector = {}
|
171
171
|
query.filters.each do |(field, op, filter_value)|
|
172
172
|
mongo_field = mongoize_field(field)
|
173
|
+
mongo_value = mongoize_value_for_field(mongo_field, filter_value)
|
173
174
|
selector[mongo_field] ||= {}
|
174
175
|
case op
|
175
176
|
when '='
|
176
|
-
selector[mongo_field] =
|
177
|
+
selector[mongo_field] = mongo_value
|
177
178
|
when '!='
|
178
|
-
selector[mongo_field]['$ne'] =
|
179
|
+
selector[mongo_field]['$ne'] = mongo_value
|
179
180
|
when 'in'
|
180
|
-
raise EmptyQueryError if
|
181
|
-
selector[mongo_field]['$in'] =
|
181
|
+
raise EmptyQueryError if mongo_value.to_a.empty?
|
182
|
+
selector[mongo_field]['$in'] = mongo_value.to_a
|
182
183
|
when '>'
|
183
|
-
selector[mongo_field]['$gt'] =
|
184
|
+
selector[mongo_field]['$gt'] = mongo_value
|
184
185
|
when '<'
|
185
|
-
selector[mongo_field]['$lt'] =
|
186
|
+
selector[mongo_field]['$lt'] = mongo_value
|
186
187
|
when '>='
|
187
|
-
selector[mongo_field]['$gte'] =
|
188
|
+
selector[mongo_field]['$gte'] = mongo_value
|
188
189
|
when '<='
|
189
|
-
selector[mongo_field]['$lte'] =
|
190
|
+
selector[mongo_field]['$lte'] = mongo_value
|
190
191
|
else
|
191
192
|
raise "unsupported op #{op}"
|
192
193
|
end
|
@@ -212,7 +213,18 @@ module Schron
|
|
212
213
|
def mongoize_field(field_name)
|
213
214
|
field_name == :id ? :_id : field_name
|
214
215
|
end
|
215
|
-
|
216
|
+
|
217
|
+
def mongoize_value_for_field(mongo_field, value)
|
218
|
+
if mongo_field == :_id
|
219
|
+
if value.respond_to?(:each)
|
220
|
+
value.map { |v| serialize_id(v) }
|
221
|
+
else
|
222
|
+
serialize_id(value)
|
223
|
+
end
|
224
|
+
else
|
225
|
+
value
|
226
|
+
end
|
227
|
+
end
|
216
228
|
end
|
217
229
|
end
|
218
230
|
end
|
@@ -275,6 +275,20 @@ if defined?(RSpec)
|
|
275
275
|
end
|
276
276
|
end
|
277
277
|
|
278
|
+
context 'id filtering' do
|
279
|
+
it 'filters by "=" with ids' do
|
280
|
+
found = ds.exec_query(query.filter(:id, '=', @c[:id]))
|
281
|
+
expect(found.size).to eq(1)
|
282
|
+
expect(found.first[:id]).to eq(@c[:id])
|
283
|
+
end
|
284
|
+
|
285
|
+
it 'filters by "in" with ids' do
|
286
|
+
found = ds.exec_query(query.filter(:id, 'in', [@c[:id], @b[:id]]))
|
287
|
+
expect(found.size).to eq(2)
|
288
|
+
expect(found.map{|h| h[:id]}).to include(@c[:id], @b[:id])
|
289
|
+
end
|
290
|
+
end
|
291
|
+
|
278
292
|
describe 'limit' do
|
279
293
|
it 'limits the results' do
|
280
294
|
found = ds.exec_query(query.limit(1))
|
data/schron.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "schron"
|
7
|
-
spec.version = "0.0.
|
7
|
+
spec.version = "0.0.7"
|
8
8
|
spec.authors = ["David Faber"]
|
9
9
|
spec.email = ["david@1bios.co"]
|
10
10
|
spec.summary = %q{Repository implementation for entity persistence}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: schron
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Faber
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|