right_support 2.1.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -273,7 +273,7 @@ module RightSupport::DB
273
273
  opt = opt.clone
274
274
  opt[:count] = DEFAULT_COUNT
275
275
  columns = Cassandra::OrderedHash.new
276
- while true
276
+ loop do
277
277
  chunk = do_op(:get, column_family, k, opt)
278
278
  columns.merge!(chunk)
279
279
  if chunk.size == opt[:count]
@@ -296,6 +296,10 @@ module RightSupport::DB
296
296
  # columns(Array|nil):: Names of columns to be retrieved, defaults to all
297
297
  # opt(Hash):: Request options with only :consistency used
298
298
  #
299
+ # === Block
300
+ # Optional block that is yielded each chunk as it is retrieved as an array
301
+ # like the normally returned result
302
+ #
299
303
  # === Return
300
304
  # (OrderedHash):: Rows retrieved with each key, value is columns
301
305
  def get_all_indexed_slices(index, key, columns = nil, opt = {})
@@ -329,40 +333,29 @@ module RightSupport::DB
329
333
  #
330
334
  # === Return
331
335
  # (Array):: Rows retrieved with each member being an instantiated object of the
332
- # given class as value, but object only contains values for the columns retrieved
336
+ # given class as value, but object only contains values for the columns retrieved;
337
+ # array is always empty if a block is given
333
338
  def get_indexed(index, key, columns = nil, opt = {})
334
- if rows = real_get_indexed(index, key, columns, opt)
335
- rows.map do |key, columns|
336
- attrs = columns.inject({}) { |a, c| a[c.column.name] = c.column.value; a }
337
- new(key, attrs)
338
- end
339
- else
340
- []
341
- end
342
- end
343
-
344
- # Get all raw rows for specified secondary key
345
- #
346
- # === Parameters
347
- # index(String):: Name of secondary index
348
- # key(String):: Index value that each selected row is required to match
349
- # columns(Array|nil):: Names of columns to be retrieved, defaults to all
350
- # opt(Hash):: Request options with only :consistency used
351
- #
352
- # === Return
353
- # (Hash):: Rows retrieved with primary key as key and value being an array
354
- # of CassandraThrift::ColumnOrSuperColumn with attributes :name, :timestamp,
355
- # and :value
356
- def real_get_indexed(index, key, columns = nil, opt = {})
357
- rows = {}
339
+ rows = []
358
340
  start = ""
359
341
  count = DEFAULT_COUNT
360
342
  expr = do_op(:create_idx_expr, index, key, "EQ")
361
343
  opt = opt[:consistency] ? {:consistency => opt[:consistency]} : {}
362
- while true
344
+ loop do
363
345
  clause = do_op(:create_idx_clause, [expr], start, count)
364
346
  chunk = do_op(:get_indexed_slices, column_family, clause, columns, opt)
365
- rows.merge!(chunk)
347
+ chunk_rows = []
348
+ chunk.each do |row_key, row_columns|
349
+ if row_columns && row_key != start
350
+ attrs = row_columns.inject({}) { |a, c| a[c.column.name] = c.column.value; a }
351
+ chunk_rows << new(row_key, attrs)
352
+ end
353
+ end
354
+ if block_given?
355
+ yield chunk_rows
356
+ else
357
+ rows.concat(chunk_rows)
358
+ end
366
359
  if chunk.size == count
367
360
  # Assume there are more chunks, use last key as start of next get
368
361
  start = chunk.keys.last
@@ -7,8 +7,8 @@ spec = Gem::Specification.new do |s|
7
7
  s.required_ruby_version = Gem::Requirement.new(">= 1.8.7")
8
8
 
9
9
  s.name = 'right_support'
10
- s.version = '2.1.0'
11
- s.date = '2012-06-16'
10
+ s.version = '2.2.0'
11
+ s.date = '2012-06-22'
12
12
 
13
13
  s.authors = ['Tony Spataro', 'Sergey Sergyenko', 'Ryan Williamson', 'Lee Kirchhoff', 'Sergey Enin']
14
14
  s.email = 'support@rightscale.com'
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: right_support
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
4
+ hash: 7
5
5
  prerelease:
6
6
  segments:
7
7
  - 2
8
- - 1
8
+ - 2
9
9
  - 0
10
- version: 2.1.0
10
+ version: 2.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Tony Spataro
@@ -19,7 +19,7 @@ autorequire:
19
19
  bindir: bin
20
20
  cert_chain: []
21
21
 
22
- date: 2012-06-16 00:00:00 Z
22
+ date: 2012-06-22 00:00:00 Z
23
23
  dependencies: []
24
24
 
25
25
  description: A toolkit of useful, reusable foundation code created by RightScale.