Class: Cassandra::Mapper::Data::Request

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

Direct Known Subclasses

Insert

Constant Summary collapse

KEY_SEPARATOR =
'##'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config, data) ⇒ Request

Returns a new instance of Request.



7
8
9
10
11
12
# File 'lib/cassandra/mapper/data/request.rb', line 7

def initialize(config, data)
  @config  = config
  @data    = convert! data.dup
  @keys    = extract! :key
  @subkeys = extract! :subkey
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



5
6
7
# File 'lib/cassandra/mapper/data/request.rb', line 5

def config
  @config
end

#dataObject (readonly)

Returns the value of attribute data.



5
6
7
# File 'lib/cassandra/mapper/data/request.rb', line 5

def data
  @data
end

#keysObject (readonly)

Returns the value of attribute keys.



5
6
7
# File 'lib/cassandra/mapper/data/request.rb', line 5

def keys
  @keys
end

#subkeysObject (readonly)

Returns the value of attribute subkeys.



5
6
7
# File 'lib/cassandra/mapper/data/request.rb', line 5

def subkeys
  @subkeys
end

Instance Method Details

#columnsObject



18
19
20
21
22
23
# File 'lib/cassandra/mapper/data/request.rb', line 18

def columns
  fields = data.empty? ? { '' => '' } : data
  fields.each_with_object({}) do |(field, value), columns|
    columns[composite *subkeys, field.to_s] = value
  end
end

#packed_keysObject



14
15
16
# File 'lib/cassandra/mapper/data/request.rb', line 14

def packed_keys
  keys.join(KEY_SEPARATOR).force_encoding('binary')
end

#query(offset = nil) ⇒ Object



25
26
27
28
29
30
# File 'lib/cassandra/mapper/data/request.rb', line 25

def query(offset=nil)
  return { start: offset } if offset
  return if subkeys.all? &:empty?
  { start:  composite(*subkeys),
    finish: composite(*subkeys, slice: :after) }
end