appoxy-simple_record 1.0.26 → 1.0.27
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.
- data/lib/results_array.rb +58 -0
- data/lib/simple_record.rb +19 -11
- data/test/paging_array_test.rb +15 -0
- data/test/test_simple_record.rb +13 -0
- metadata +3 -1
@@ -0,0 +1,58 @@
|
|
1
|
+
module SimpleRecord
|
2
|
+
class ResultsArray
|
3
|
+
|
4
|
+
attr_reader :next_token, :clz, :params, :items, :i
|
5
|
+
|
6
|
+
def initialize(clz=nil, params=[], items=[], next_token=nil)
|
7
|
+
@clz = clz
|
8
|
+
puts 'class=' + clz.inspect
|
9
|
+
@params = params
|
10
|
+
#puts 'params in ra=' + params.inspect
|
11
|
+
@items = items
|
12
|
+
@next_token = next_token
|
13
|
+
@i = 0
|
14
|
+
end
|
15
|
+
|
16
|
+
def << (val)
|
17
|
+
@items << val
|
18
|
+
end
|
19
|
+
|
20
|
+
def [](i)
|
21
|
+
@items[i]
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
def each(&blk)
|
26
|
+
limit = nil
|
27
|
+
if params.size > 1
|
28
|
+
options = params[1]
|
29
|
+
limit = options[:limit]
|
30
|
+
else
|
31
|
+
options = {}
|
32
|
+
params[1] = options
|
33
|
+
end
|
34
|
+
|
35
|
+
@items.each do |v|
|
36
|
+
puts @i.to_s
|
37
|
+
yield v
|
38
|
+
@i += 1
|
39
|
+
if !limit.nil? && @i >= limit
|
40
|
+
return
|
41
|
+
end
|
42
|
+
end
|
43
|
+
# no more items, but is there a next token?
|
44
|
+
return if clz.nil?
|
45
|
+
|
46
|
+
unless next_token.nil?
|
47
|
+
puts 'finding more items...'
|
48
|
+
#puts 'params in block=' + params.inspect
|
49
|
+
options[:next_token] = next_token
|
50
|
+
res = clz.find(*params)
|
51
|
+
@items = res.items
|
52
|
+
@next_token = res.next_token
|
53
|
+
each(&blk)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
data/lib/simple_record.rb
CHANGED
@@ -25,6 +25,8 @@
|
|
25
25
|
|
26
26
|
require 'right_aws'
|
27
27
|
require 'sdb/active_sdb'
|
28
|
+
#require 'results_array'
|
29
|
+
require File.expand_path(File.dirname(__FILE__) + "/results_array")
|
28
30
|
|
29
31
|
module SimpleRecord
|
30
32
|
|
@@ -841,6 +843,7 @@ This is done on getters now
|
|
841
843
|
end
|
842
844
|
|
843
845
|
def self.find(*params)
|
846
|
+
puts 'params=' + params.inspect
|
844
847
|
reload=true
|
845
848
|
first=false
|
846
849
|
all=false
|
@@ -854,15 +857,20 @@ This is done on getters now
|
|
854
857
|
|
855
858
|
|
856
859
|
# Pad and Offset number attributes
|
857
|
-
options =
|
858
|
-
|
860
|
+
options = {}
|
861
|
+
if params.size > 1
|
862
|
+
options = params[1]
|
863
|
+
#puts 'options=' + options.inspect
|
864
|
+
#puts 'after collect=' + options.inspect
|
865
|
+
end
|
859
866
|
convert_condition_params(options)
|
860
|
-
#puts '
|
867
|
+
#puts 'params2=' + params.inspect
|
861
868
|
|
862
869
|
results = all ? [] : nil
|
863
870
|
begin
|
864
871
|
results=super(*params)
|
865
872
|
cache_results(results)
|
873
|
+
results = SimpleRecord::ResultsArray.new(self, params, results, next_token)
|
866
874
|
rescue RightAws::AwsError, RightAws::ActiveSdb::ActiveSdbError
|
867
875
|
puts "RESCUED: " + $!.message
|
868
876
|
if ($!.message().index("NoSuchDomain") != nil)
|
@@ -909,15 +917,15 @@ This is done on getters now
|
|
909
917
|
end
|
910
918
|
|
911
919
|
def self.convert_condition_params(options)
|
912
|
-
if
|
913
|
-
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
-
|
918
|
-
|
919
|
-
end
|
920
|
+
return if options.nil?
|
921
|
+
conditions = options[:conditions]
|
922
|
+
if !conditions.nil? && conditions.size > 1
|
923
|
+
# all after first are values
|
924
|
+
conditions.collect! { |x|
|
925
|
+
self.pad_and_offset(x)
|
926
|
+
}
|
920
927
|
end
|
928
|
+
|
921
929
|
end
|
922
930
|
|
923
931
|
def self.cache_results(results)
|
@@ -0,0 +1,15 @@
|
|
1
|
+
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + "/../lib/results_array")
|
3
|
+
|
4
|
+
array = SimpleRecord::ResultsArray.new()
|
5
|
+
#array.extend(ResultsArray)
|
6
|
+
|
7
|
+
500.times do |i|
|
8
|
+
array << "_ob_" + i.to_s
|
9
|
+
end
|
10
|
+
|
11
|
+
array.each do |v|
|
12
|
+
puts v.to_s
|
13
|
+
end
|
14
|
+
|
15
|
+
puts array[10]
|
data/test/test_simple_record.rb
CHANGED
@@ -18,6 +18,7 @@ class TestSimpleRecord < Test::Unit::TestCase
|
|
18
18
|
SimpleRecord.close_connection()
|
19
19
|
end
|
20
20
|
|
21
|
+
|
21
22
|
def test_save_get
|
22
23
|
mm = MyModel.new
|
23
24
|
mm.name = "Travis"
|
@@ -176,4 +177,16 @@ class TestSimpleRecord < Test::Unit::TestCase
|
|
176
177
|
#MyChildModel.defined_attributes.inspect
|
177
178
|
|
178
179
|
end
|
180
|
+
|
181
|
+
|
182
|
+
# ensures that it uses next token and what not
|
183
|
+
def test_big_result
|
184
|
+
#110.times do |i|
|
185
|
+
# MyModel
|
186
|
+
#end
|
187
|
+
#rs = MyModel.find(:all, :limit=>300)
|
188
|
+
#rs.each do |x|
|
189
|
+
# puts 'x=' + x.id
|
190
|
+
#end
|
191
|
+
end
|
179
192
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appoxy-simple_record
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.27
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Travis Reeder
|
@@ -23,6 +23,7 @@ extensions: []
|
|
23
23
|
extra_rdoc_files:
|
24
24
|
- README.markdown
|
25
25
|
files:
|
26
|
+
- lib/results_array.rb
|
26
27
|
- lib/simple_record.rb
|
27
28
|
- README.markdown
|
28
29
|
has_rdoc: true
|
@@ -55,5 +56,6 @@ summary: Drop in replacement for ActiveRecord to Amazon SimpleDB instead.
|
|
55
56
|
test_files:
|
56
57
|
- test/my_child_model.rb
|
57
58
|
- test/my_model.rb
|
59
|
+
- test/paging_array_test.rb
|
58
60
|
- test/temp_test.rb
|
59
61
|
- test/test_simple_record.rb
|