class SQB::Insert

Public Instance Methods

record(&block) click to toggle source
# File lib/sqb/insert.rb, line 39
def record(&block)
  @record = {}
  block.call
  @records ||= []
  @records << @record
  @record = nil
end
to_sql() click to toggle source
# File lib/sqb/insert.rb, line 6
def to_sql
  [].tap do |query|
    values_sql = values.map { |rec| "(" + rec.join(', ') + ")" }.join(', ')
    query << "#{mysql_verb} INTO"
    query << escape_and_join(@options[:database_name], @table_name)
    if values_sql.empty?
      raise NoValuesError, "No values have been specified. Use `value` to add values to the query."
    end
    query << "(#{columns.join(', ')})"
    query << "VALUES"
    query << values_sql
  end.join(' ')
end
value(hash) click to toggle source

Set a value to be inserted

@param key [String] @param value [String, nil]

# File lib/sqb/insert.rb, line 24
def value(hash)
  if @record.nil?
    record = (@local_record ||= {})
  else
    record = @record
  end

  hash.each do |key, value|
    record[key] = value
  end

  self
end
Also aliased as: values
values(hash)
Alias for: value

Private Instance Methods

all_records() click to toggle source
# File lib/sqb/insert.rb, line 65
def all_records
  [@local_record, *@records || []].compact
end
columns() click to toggle source
# File lib/sqb/insert.rb, line 49
def columns
  columns_keys.map { |c| escape(c) }
end
columns_keys() click to toggle source
# File lib/sqb/insert.rb, line 53
def columns_keys
  all_records.map(&:keys).flatten.uniq
end
mysql_verb() click to toggle source
# File lib/sqb/insert.rb, line 69
def mysql_verb
  "INSERT"
end