class MassInsert::Adapters::AbstractAdapter

Attributes

options[RW]
values[RW]

Public Class Methods

new(values, options) click to toggle source
Calls superclass method
# File lib/mass_insert/adapters/abstract_adapter.rb, line 6
def initialize(values, options)
  super(options.fetch(:class_name))
  @values  = values
  @options = options
end

Public Instance Methods

to_sql() click to toggle source
# File lib/mass_insert/adapters/abstract_adapter.rb, line 12
def to_sql
  "#{insert_sql} #{values_sql};"
end

Private Instance Methods

array_of_attributes_sql() click to toggle source
# File lib/mass_insert/adapters/abstract_adapter.rb, line 44
def array_of_attributes_sql
  values.map do |attrs|
    columns.map do |name|
      value = column_value(attrs, name)
      connection.quote(value)
    end.join(',')
  end
end
column_value(attrs, column) click to toggle source
# File lib/mass_insert/adapters/abstract_adapter.rb, line 53
def column_value(attrs, column)
  attrs.fetch(column.to_sym) do
    attrs.fetch(column.to_s, nil)
  end
end
columns() click to toggle source
# File lib/mass_insert/adapters/abstract_adapter.rb, line 18
def columns
  @columns ||= begin
    columns = column_names.dup
    columns.delete(primary_key) unless options[:primary_key]
    columns.map(&:to_sym)
  end
end
columns_sql() click to toggle source
# File lib/mass_insert/adapters/abstract_adapter.rb, line 36
def columns_sql
  "(#{quoted_columns.join(',')})"
end
insert_sql() click to toggle source
# File lib/mass_insert/adapters/abstract_adapter.rb, line 32
def insert_sql
  "INSERT INTO #{quoted_table_name} #{columns_sql} VALUES"
end
quoted_columns() click to toggle source
# File lib/mass_insert/adapters/abstract_adapter.rb, line 26
def quoted_columns
  columns.map do |name|
    connection.quote_column_name(name)
  end
end
values_sql() click to toggle source
# File lib/mass_insert/adapters/abstract_adapter.rb, line 40
def values_sql
  "(#{array_of_attributes_sql.join('),(')})"
end