Module: BulkUploadable::ClassMethods

Defined in:
lib/bulk_uploadable.rb

Instance Method Summary collapse

Instance Method Details

#bulk_upload(keys, values, use_transaction = false) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/bulk_uploadable.rb', line 12

def bulk_upload(keys, values, use_transaction = false)
  sql_columns = "(#{keys.join(', ')})"

  escaped_values =  values.collect do |value|
    value.collect {|v| sanitize(v) }
  end

  sql_values = escaped_values.collect do |value|
    "(#{value.join(', ')})"
  end.join(', ')

  sql_query = "INSERT INTO #{self.table_name} #{sql_columns} VALUES #{sql_values}"

  if use_transaction
    self.perform_sql_in_transaction sql_query
  else
    self.perform_sql sql_query
  end
end

#perform_sql(sql) ⇒ Object



32
33
34
# File 'lib/bulk_uploadable.rb', line 32

def perform_sql(sql)
  self.connection.execute(sql)
end

#perform_sql_in_transaction(sql) ⇒ Object



36
37
38
39
40
41
# File 'lib/bulk_uploadable.rb', line 36

def perform_sql_in_transaction(sql)
  stmt_result = nil
  self.transaction do
    stmt_result = self.connection.execute(sql).to_a
  end
end