simple_record 1.3.3 → 1.3.4

Sign up to get free protection for your applications and to get access to all the features.
data/lib/simple_record.rb CHANGED
@@ -229,6 +229,7 @@ module SimpleRecord
229
229
  end
230
230
 
231
231
  def has_id_on_end(name_s)
232
+ name_s = name_s.to_s
232
233
  name_s.length > 3 && name_s[-3..-1] == "_id"
233
234
  end
234
235
 
@@ -804,6 +805,8 @@ module SimpleRecord
804
805
  # Query example:
805
806
  # MyModel.find(:all, :conditions=>["name = ?", name], :order=>"created desc", :limit=>10)
806
807
  #
808
+ # Extra options:
809
+ # :per_token => the number of results to return per next_token, max is 2500.
807
810
  def self.find(*params)
808
811
  #puts 'params=' + params.inspect
809
812
  q_type = :all
@@ -820,6 +823,13 @@ module SimpleRecord
820
823
  #puts 'options=' + options.inspect
821
824
  #puts 'after collect=' + options.inspect
822
825
  convert_condition_params(options)
826
+ per_token = options[:per_token]
827
+ if per_token
828
+ op_dup = options.dup
829
+ op_dup[:limit] = per_token # simpledb uses Limit as a paging thing, not what is normal
830
+ params[1] = op_dup
831
+ end
832
+
823
833
  end
824
834
  # puts 'params2=' + params.inspect
825
835
 
@@ -19,10 +19,12 @@ class TestResultsArray < TestBase
19
19
  # ensures that it uses next token and what not
20
20
  def test_big_result
21
21
  i = TestHelpers.clear_out_my_models
22
+ SimpleRecord.stats.clear
22
23
  num_made = 110
23
24
  num_made.times do |i|
24
25
  mm = MyModel.create(:name=>"Travis", :age=>i, :cool=>true)
25
26
  end
27
+ assert SimpleRecord.stats.saves == num_made
26
28
  rs = MyModel.find(:all) # should get 100 at a time
27
29
  assert rs.size == num_made
28
30
  i = 0
@@ -30,15 +32,26 @@ class TestResultsArray < TestBase
30
32
  #puts 'x=' + x.id
31
33
  i+=1
32
34
  end
35
+ assert SimpleRecord.stats.selects == 3 # one for count.
33
36
  assert i == num_made
34
37
  # running through all the results twice to ensure it works properly after lazy loading complete.
38
+ SimpleRecord.stats.clear
35
39
  i = 0
36
40
  rs.each do |x|
37
41
  #puts 'x=' + x.id
38
42
  i+=1
39
43
  end
44
+ assert SimpleRecord.stats.selects == 0
40
45
  assert i == num_made
41
46
  end
47
+
48
+ def test_limit
49
+ SimpleRecord.stats.clear
50
+ rs = MyModel.find(:all, :per_token=>2500)
51
+ assert rs.size == 110
52
+ assert SimpleRecord.stats.selects == 1, "SimpleRecord.stats.selects is #{SimpleRecord.stats.selects}"
53
+
54
+ end
42
55
 
43
56
 
44
57
  end
@@ -662,4 +662,5 @@ class TestSimpleRecord < TestBase
662
662
 
663
663
  end
664
664
 
665
+
665
666
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_record
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 3
9
- - 3
10
- version: 1.3.3
9
+ - 4
10
+ version: 1.3.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Travis Reeder
@@ -17,7 +17,7 @@ autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
19
 
20
- date: 2010-05-17 00:00:00 -07:00
20
+ date: 2010-05-27 00:00:00 -07:00
21
21
  default_executable:
22
22
  dependencies:
23
23
  - !ruby/object:Gem::Dependency