kvom 6.8.3.115.227021242 → 6.8.3.174.51542603

Sign up to get free protection for your applications and to get access to all the features.
@@ -51,7 +51,7 @@ class Base
51
51
  end
52
52
 
53
53
  def query(hash_value, range_value, query_options={})
54
- query_options.assert_valid_keys(:limit)
54
+ query_options.assert_valid_keys(:limit, :scan_index_forward)
55
55
  count_document_request do
56
56
  query_docs(hash_value, range_value, query_options)
57
57
  end
@@ -53,9 +53,14 @@ class FilesystemAdapter < Base
53
53
  else
54
54
  single_file_query(hash_value, range_value)
55
55
  end
56
+
57
+ pathes_and_range_values.sort_by!(&:first)
58
+ pathes_and_range_values.reverse! if query_options[:scan_index_forward] == false
59
+
56
60
  if limit = query_options[:limit]
57
61
  pathes_and_range_values = pathes_and_range_values.first(limit)
58
62
  end
63
+
59
64
  pathes_and_range_values.inject([]) do |memo, (path, doc_range_value)|
60
65
  doc_range_value = nil if doc_range_value == ""
61
66
  key = [hash_value, doc_range_value]
@@ -325,6 +325,18 @@ describe Kvom::Model::Base do
325
325
  adapter.query(volatile_id('one'), Range.new('0001', '0022'), :limit => 8).length.should eq(4)
326
326
  end
327
327
 
328
+ it 'is able to control scan direction' do
329
+ adapter.query(volatile_id('one'), Range.new('0001', '0022'), :scan_index_forward => true).
330
+ map(&:key).should eq([one_001, one_002, one_0021, one_0022].map(&:key))
331
+ adapter.query(volatile_id('one'), Range.new('0001', '0022'), :scan_index_forward => false).
332
+ map(&:key).should eq([one_0022, one_0021, one_002, one_001].map(&:key))
333
+ end
334
+
335
+ it 'scans forwards by default' do
336
+ adapter.query(volatile_id('one'), Range.new('0001', '0022')).map(&:key).
337
+ should eq([one_001, one_002, one_0021, one_0022].map(&:key))
338
+ end
339
+
328
340
  context "when range is a single value" do
329
341
  context "when the doc exists" do
330
342
  it "returns a one-element list with the doc's model instance" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kvom
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.8.3.115.227021242
4
+ version: 6.8.3.174.51542603
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-01 00:00:00.000000000 Z
12
+ date: 2013-03-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multi_json
@@ -187,7 +187,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
187
187
  version: '0'
188
188
  segments:
189
189
  - 0
190
- hash: -515362509
190
+ hash: -968281363
191
191
  required_rubygems_version: !ruby/object:Gem::Requirement
192
192
  none: false
193
193
  requirements: