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
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