Class: Cequel::Metal::Updater
- Defined in:
- lib/cequel/metal/updater.rb
Overview
Builder for ‘UPDATE` statement containing heterogeneous operations (set columns, atomically mutate collections)
Instance Method Summary collapse
-
#list_append(column, elements) ⇒ void
Append elements to a list column.
-
#list_prepend(column, elements) ⇒ void
Prepend elements to a list column.
-
#list_remove(column, value) ⇒ void
Remove all occurrences of an element from a list.
-
#list_replace(column, index, value) ⇒ void
Replace a list item at a given position.
-
#map_update(column, updates) ⇒ void
Add or update elements in a map.
-
#set(data) ⇒ void
Directly set column values.
-
#set_add(column, values) ⇒ void
Add elements to a set.
-
#set_remove(column, values) ⇒ void
Remove elements from a set.
Methods inherited from Writer
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
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
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
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
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
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
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
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
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 |