Class: Cequel::Metal::Updater

Inherits:
Writer
  • Object
show all
Defined in:
lib/cequel/metal/updater.rb

Overview

Builder for ‘UPDATE` statement containing heterogeneous operations (set columns, atomically mutate collections)

Instance Method Summary collapse

Methods inherited from Writer

#execute, #initialize

Constructor Details

This class inherits a constructor from Cequel::Metal::Writer

Instance Method Details

#list_append(column, elements) ⇒ void

This method returns an undefined value.

Append elements to a list column

Parameters:

  • column (Symbol)

    column name

  • elements (Array)

    elements to append

See Also:

Since:

  • 1.0.0



55
56
57
58
# File 'lib/cequel/metal/updater.rb', line 55

def list_append(column, elements)
  statements << "#{column} = #{column} + [?]"
  bind_vars << elements
end

#list_prepend(column, elements) ⇒ void

This method returns an undefined value.

Prepend elements to a list column

Parameters:

  • column (Symbol)

    column name

  • elements (Array<Object>)

    elements to prepend

See Also:

Since:

  • 1.0.0



41
42
43
44
# File 'lib/cequel/metal/updater.rb', line 41

def list_prepend(column, elements)
  statements << "#{column} = [?] + #{column}"
  bind_vars << elements
end

#list_remove(column, value) ⇒ void

This method returns an undefined value.

Remove all occurrences of an element from a list

Parameters:

  • column (Symbol)

    column name

  • value

    value to remove

See Also:

Since:

  • 1.0.0



69
70
71
72
# File 'lib/cequel/metal/updater.rb', line 69

def list_remove(column, value)
  statements << "#{column} = #{column} - [?]"
  bind_vars << value
end

#list_replace(column, index, value) ⇒ void

This method returns an undefined value.

Replace a list item at a given position

Parameters:

  • column (Symbol)

    column name

  • index (Integer)

    index at which to replace value

  • value

    new value for position

See Also:

Since:

  • 1.0.0



84
85
86
87
# File 'lib/cequel/metal/updater.rb', line 84

def list_replace(column, index, value)
  statements << "#{column}[#{index}] = ?"
  bind_vars << value
end

#map_update(column, updates) ⇒ void

This method returns an undefined value.

Add or update elements in a map

Parameters:

  • column (Symbol)

    column name

  • updates (Hash)

    map of keys to values to update in map

See Also:

Since:

  • 1.0.0



126
127
128
129
130
# File 'lib/cequel/metal/updater.rb', line 126

def map_update(column, updates)
  binding_pairs = ::Array.new(updates.length) { '?:?' }.join(',')
  statements << "#{column} = #{column} + {#{binding_pairs}}"
  bind_vars.concat(updates.flatten)
end

#set(data) ⇒ void

This method returns an undefined value.

Directly set column values

Parameters:

  • data (Hash)

    map of column names to values

See Also:

Since:

  • 1.0.0



23
24
25
26
27
28
29
30
# File 'lib/cequel/metal/updater.rb', line 23

def set(data)
  data.each_pair do |column, value|
    prepare_upsert_value(value) do |binding, *values|
      statements << "#{column} = #{binding}"
      bind_vars.concat(values)
    end
  end
end

#set_add(column, values) ⇒ void

This method returns an undefined value.

Add elements to a set

Parameters:

  • column (Symbol)

    column name

  • values (Set)

    elements to add to set

See Also:

Since:

  • 1.0.0



98
99
100
101
# File 'lib/cequel/metal/updater.rb', line 98

def set_add(column, values)
  statements << "#{column} = #{column} + {?}"
  bind_vars << values
end

#set_remove(column, values) ⇒ void

This method returns an undefined value.

Remove elements from a set

Parameters:

  • column (Symbol)

    column name

  • values (Set)

    elements to remove from set

See Also:

Since:

  • 1.0.0



112
113
114
115
# File 'lib/cequel/metal/updater.rb', line 112

def set_remove(column, values)
  statements << "#{column} = #{column} - {?}"
  bind_vars << ::Kernel.Array(values)
end