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