lib/heirloom/aws/simpledb.rb in heirloom-0.11.0 vs lib/heirloom/aws/simpledb.rb in heirloom-0.11.1
- old
+ new
@@ -41,11 +41,34 @@
def put_attributes(domain, key, attributes, options = {})
@sdb.put_attributes domain, key, attributes, options
end
- def select(query)
- @sdb.select(query).body['Items']
+ def select(query, opts = {})
+ has_more = true
+ next_token = nil
+ results = {}
+
+ if opts[:offset] && opts[:offset] > 0
+ limit = @sdb.select("#{query} limit #{opts[:offset]}").body
+ if limit['NextToken']
+ next_token = limit['NextToken']
+ else
+ has_more = false
+ end
+ end
+ while has_more
+ more = @sdb.select(query, 'NextToken' => next_token).body
+ more['Items'].each do |k, v|
+ block_given? ? yield(k, v) : results[k] = v
+ end
+ if more['NextToken']
+ next_token = more['NextToken']
+ else
+ has_more = false
+ end
+ end
+ results unless block_given?
end
def delete(domain, key)
@sdb.delete_attributes domain, key
end