class NoSE::Backend::CassandraBackend::DeleteStatementStep
Delete
data from an index on the backend
Public Class Methods
new(client, index)
click to toggle source
Calls superclass method
NoSE::Backend::Backend::DeleteStatementStep::new
# File lib/nose/backend/cassandra.rb, line 234 def initialize(client, index) super @index_keys = @index.hash_fields + @index.order_fields.to_set # Prepare the statement required to perform the deletion delete = "DELETE FROM #{index.key} WHERE " delete += @index_keys.map { |key| "\"#{key.id}\" = ?" }.join(' AND ') @prepared = client.prepare delete end
Public Instance Methods
process(results)
click to toggle source
Execute the delete for a given set of keys
# File lib/nose/backend/cassandra.rb, line 246 def process(results) # Delete each row from the index results.each do |result| values = delete_values result @client.execute(@prepared, arguments: values) end end
Private Instance Methods
delete_values(result)
click to toggle source
Get the values used in the WHERE clause for a CQL DELETE
# File lib/nose/backend/cassandra.rb, line 257 def delete_values(result) @index_keys.map do |key| cur_field = @index.all_fields.find { |field| field.id == key.id } if cur_field.is_a?(Fields::IDField) Cassandra::Uuid.new(result[key.id].to_i) else result[key.id] end end end