class ROM::SQL::Commands::Update

Update command

@api public

Public Instance Methods

execute(tuple) click to toggle source

Updates existing tuple in a relation

@return [Array<Hash>, Hash]

@api public

# File lib/rom/sql/commands/update.rb, line 26
def execute(tuple)
  update(input[tuple].to_h)
end

Private Instance Methods

finalize(tuples, *) click to toggle source

@api private

# File lib/rom/sql/commands/update.rb, line 33
def finalize(tuples, *)
  tuples.map { |t| relation.output_schema[t] }
end
primary_key() click to toggle source

@api private

# File lib/rom/sql/commands/update.rb, line 48
def primary_key
  relation.primary_key
end
update(tuple) click to toggle source

Executes update statement for a given tuple

@api private

# File lib/rom/sql/commands/update.rb, line 40
def update(tuple)
  pks = relation.map { |t| t[primary_key] }
  dataset = relation.dataset
  dataset.update(tuple)
  dataset.unfiltered.where(primary_key => pks).to_a
end
with_input_tuples(tuples) { |tuple| ... } click to toggle source

Yields tuples for insertion or return an enumerator

@api private

# File lib/rom/sql/commands/update.rb, line 55
def with_input_tuples(tuples)
  input_tuples = Array([tuples]).flatten(1).map
  return input_tuples unless block_given?
  input_tuples.each { |tuple| yield(tuple) }
end