schron 0.0.6 → 0.0.7

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 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