Class: Cassandra::Mapper::Data::Response

Inherits:
Object
  • Object
show all
Defined in:
lib/cassandra/mapper/data/response.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config, key_values, columns) ⇒ Response

Returns a new instance of Response.



5
6
7
8
9
# File 'lib/cassandra/mapper/data/response.rb', line 5

def initialize(config, key_values, columns)
  @config     = config
  @key_values = key_values
  @columns    = columns
end

Instance Attribute Details

#columnsObject (readonly)

Returns the value of attribute columns.



3
4
5
# File 'lib/cassandra/mapper/data/response.rb', line 3

def columns
  @columns
end

#configObject (readonly)

Returns the value of attribute config.



3
4
5
# File 'lib/cassandra/mapper/data/response.rb', line 3

def config
  @config
end

#key_valuesObject (readonly)

Returns the value of attribute key_values.



3
4
5
# File 'lib/cassandra/mapper/data/response.rb', line 3

def key_values
  @key_values
end

Instance Method Details

#keysObject



11
12
13
# File 'lib/cassandra/mapper/data/response.rb', line 11

def keys
  Hash[config.key.zip key_values]
end

#subkeys(values) ⇒ Object



15
16
17
# File 'lib/cassandra/mapper/data/response.rb', line 15

def subkeys(values)
  Hash[config.subkey.zip values]
end

#unpackObject



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/cassandra/mapper/data/response.rb', line 19

def unpack
  return [] if columns.empty?
  records = columns.group_by {|composite, _| composite[0..-2] }
  records.map do |subkey_values, fields|
    record = keys.merge subkeys(subkey_values)
    fields.each do |composite, value|
      field = composite[-1]
      record[field.to_sym] = value unless field.empty?
    end
    convert! record
  end
end