kvom 6.8.2.36.82613853 → 6.8.3.1.23895778

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.
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
21
21
  s.require_paths = ["lib"]
22
22
 
23
23
 
24
- s.add_runtime_dependency "multi_json", "~> 1.3"
24
+ s.add_runtime_dependency "multi_json", ">= 1.5.1"
25
25
  s.add_runtime_dependency "activesupport", ">= 3" # does not support rational versioning, does it?
26
26
  s.add_runtime_dependency "activemodel", ">= 3" # adapters
27
27
 
@@ -50,9 +50,10 @@ class Base
50
50
  end
51
51
  end
52
52
 
53
- def query(hash_value, range_value)
53
+ def query(hash_value, range_value, query_options={})
54
+ query_options.assert_valid_keys(:limit)
54
55
  count_document_request do
55
- query_docs(hash_value, range_value)
56
+ query_docs(hash_value, range_value, query_options)
56
57
  end
57
58
  end
58
59
 
@@ -36,7 +36,7 @@ class DynamodbAdapter < Base
36
36
  item.delete
37
37
  end
38
38
 
39
- def query_docs(hash_value, range_value)
39
+ def query_docs(hash_value, range_value, query_options={})
40
40
  raise "Unsupported range value <empty string>" if range_value == ""
41
41
  case range_value
42
42
  when nil, String
@@ -52,11 +52,12 @@ class DynamodbAdapter < Base
52
52
  dynamo_range_start = dynamo_range_value(range_value.begin)
53
53
  dynamo_range_end = dynamo_range_value(range_value.end)
54
54
 
55
- query_options = {
55
+ query_options = query_options.merge(
56
56
  :hash_value => partitioned_hash_value(hash_value),
57
57
  :range_value => Range.new(dynamo_range_start, dynamo_range_end),
58
- :select => :all,
59
- }
58
+ :select => :all
59
+ )
60
+
60
61
  table.items.query(query_options).map do |item_data|
61
62
  item = item_data.item
62
63
  key = key_from_item(item)
@@ -45,7 +45,7 @@ class FilesystemAdapter < Base
45
45
  FileUtils.rm_f(filepath_for_hash_and_range(key.first, key[1]))
46
46
  end
47
47
 
48
- def query_docs(hash_value, range_value)
48
+ def query_docs(hash_value, range_value, query_options={})
49
49
  pathes_and_range_values =
50
50
  case range_value
51
51
  when Range
@@ -53,6 +53,9 @@ class FilesystemAdapter < Base
53
53
  else
54
54
  single_file_query(hash_value, range_value)
55
55
  end
56
+ if limit = query_options[:limit]
57
+ pathes_and_range_values = pathes_and_range_values.first(limit)
58
+ end
56
59
  pathes_and_range_values.inject([]) do |memo, (path, doc_range_value)|
57
60
  doc_range_value = nil if doc_range_value == ""
58
61
  key = [hash_value, doc_range_value]
@@ -291,7 +291,7 @@ describe Kvom::Model::Base do
291
291
  end
292
292
  end
293
293
 
294
- describe "adapter.query(<hash_value>, <range_spec>)" do
294
+ describe "adapter.query(<hash_value>, <range_spec>, <query_options>)" do
295
295
 
296
296
  def set_of_keys(documents)
297
297
  keys = documents.map{|doc| doc.key}.to_set
@@ -319,6 +319,12 @@ describe Kvom::Model::Base do
319
319
  [one_001, one_002, one_0021, one_0022, one_3, two_two, three_empty]
320
320
  end
321
321
 
322
+ it 'should be able to limit results' do
323
+ adapter.query(volatile_id('one'), Range.new('0001', '0022'), :limit => 2).length.should eq(2)
324
+ adapter.query(volatile_id('one'), Range.new('0001', '0022'), :limit => 4).length.should eq(4)
325
+ adapter.query(volatile_id('one'), Range.new('0001', '0022'), :limit => 8).length.should eq(4)
326
+ end
327
+
322
328
  context "when range is a single value" do
323
329
  context "when the doc exists" do
324
330
  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.2.36.82613853
4
+ version: 6.8.3.1.23895778
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,24 +9,24 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-31 00:00:00.000000000 Z
12
+ date: 2013-02-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multi_json
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ~>
19
+ - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: '1.3'
21
+ version: 1.5.1
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
- - - ~>
27
+ - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
- version: '1.3'
29
+ version: 1.5.1
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: activesupport
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -187,7 +187,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
187
187
  version: '0'
188
188
  segments:
189
189
  - 0
190
- hash: -176860239
190
+ hash: -10481197
191
191
  required_rubygems_version: !ruby/object:Gem::Requirement
192
192
  none: false
193
193
  requirements: