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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4aeceef48e41835c46613cdc24244e572de9be71
4
- data.tar.gz: d12b5a7d4afe3becb745bf7f0c3d5f7ed85af577
3
+ metadata.gz: 10cd6ff2067f372625bf7fb368d03b3ea0255037
4
+ data.tar.gz: 7d9240d4e478e53217f8876a61449304344bcb92
5
5
  SHA512:
6
- metadata.gz: cd30c7665c334b7765286b0bbe340efd7d6a1a4165010bbfc13c56c0d72ffa29f316a55768c55269949adba84ebf8bdc408a129b01db0d08e5f6f26287153dd1
7
- data.tar.gz: 88ce344e0850b608b49215f3e67d89c39297a9ad8ca036134d271b9d617892ad571cee88782b0775d5736e38d1401ae415e70bef5c1a8bbcef68df0ce13e6343
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] = filter_value
177
+ selector[mongo_field] = mongo_value
177
178
  when '!='
178
- selector[mongo_field]['$ne'] = filter_value
179
+ selector[mongo_field]['$ne'] = mongo_value
179
180
  when 'in'
180
- raise EmptyQueryError if filter_value.to_a.empty?
181
- selector[mongo_field]['$in'] = filter_value.to_a
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'] = filter_value
184
+ selector[mongo_field]['$gt'] = mongo_value
184
185
  when '<'
185
- selector[mongo_field]['$lt'] = filter_value
186
+ selector[mongo_field]['$lt'] = mongo_value
186
187
  when '>='
187
- selector[mongo_field]['$gte'] = filter_value
188
+ selector[mongo_field]['$gte'] = mongo_value
188
189
  when '<='
189
- selector[mongo_field]['$lte'] = filter_value
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))
@@ -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.6"
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.6
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-10-24 00:00:00.000000000 Z
11
+ date: 2014-12-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake