class Riddle::Query::Insert

Attributes

columns[R]
values[R]

Public Class Methods

new(index, columns = [], values = []) click to toggle source
# File lib/riddle/query/insert.rb, line 5
def initialize(index, columns = [], values = [])
  @index   = index
  @columns = columns
  @values  = values.first.is_a?(Array) ? values : [values]
  @replace = false
end

Public Instance Methods

replace!() click to toggle source
# File lib/riddle/query/insert.rb, line 12
def replace!
  @replace = true
  self
end
to_sql() click to toggle source
# File lib/riddle/query/insert.rb, line 17
def to_sql
  "#{command} INTO #{@index} (#{columns_to_s}) VALUES (#{values_to_s})"
end

Private Instance Methods

columns_to_s() click to toggle source
# File lib/riddle/query/insert.rb, line 27
def columns_to_s
  columns.collect { |column|
    column.to_s == 'id' ? 'id' : "`#{column}`"
  }.join(', ')

end
command() click to toggle source
# File lib/riddle/query/insert.rb, line 23
def command
  @replace ? 'REPLACE' : 'INSERT'
end
translated_value(value) click to toggle source
# File lib/riddle/query/insert.rb, line 42
def translated_value(value)
  case value
  when String
    "'#{value.gsub(/['\\]/, '').gsub(/\s+/, ' ')}'"
  when TrueClass, FalseClass
    value ? 1 : 0
  when Time
    value.to_i
  when Date
    value.to_time.to_i
  when Array
    "(#{value.join(',')})"
  else
    value
  end
end
values_to_s() click to toggle source
# File lib/riddle/query/insert.rb, line 34
def values_to_s
  values.collect { |value_set|
    value_set.collect { |value|
      translated_value(value)
    }.join(', ')
  }.join('), (')
end