class ROM::SQL::Commands::Create
SQL
create command
@api public
Public Instance Methods
execute(tuples)
click to toggle source
Inserts provided tuples into the database table
@api public
# File lib/rom/sql/commands/create.rb, line 24 def execute(tuples) insert_tuples = with_input_tuples(tuples) do |tuple| attributes = input[tuple] attributes.to_h end if insert_tuples.length > 1 multi_insert(insert_tuples) else insert(insert_tuples) end end
Private Instance Methods
finalize(tuples, *)
click to toggle source
@api private
# File lib/rom/sql/commands/create.rb, line 40 def finalize(tuples, *) tuples.map { |t| relation.output_schema[t] } end
insert(tuples)
click to toggle source
Executes insert statement and returns inserted tuples
@api private
# File lib/rom/sql/commands/create.rb, line 47 def insert(tuples) pks = tuples.map { |tuple| relation.insert(tuple) } relation.where(relation.primary_key => pks).to_a end
multi_insert(tuples)
click to toggle source
Executes multi_insert
statement and returns inserted tuples
@api private
# File lib/rom/sql/commands/create.rb, line 55 def multi_insert(tuples) pks = relation.multi_insert(tuples, return: :primary_key) relation.where(relation.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/create.rb, line 63 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