Class: ActiveRecordDumper::SerializationHelper::Load

Inherits:
Object
  • Object
show all
Defined in:
lib/activerecord_dumper/serialization_helper.rb

Direct Known Subclasses

CSVDB::Load

Class Method Summary collapse

Class Method Details

.load(io, truncate = true) ⇒ Object



59
60
61
62
63
# File 'lib/activerecord_dumper/serialization_helper.rb', line 59

def self.load(io, truncate = true)
  ActiveRecord::Base.connection.transaction do
    load_documents(io, truncate)
  end
end

.load_records(table, column_names, records) ⇒ Object



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/activerecord_dumper/serialization_helper.rb', line 78

def self.load_records(table, column_names, records)
  return if column_names.nil?

  quoted_column_names = column_names.map do |column|
    ActiveRecord::Base.connection.quote_column_name(column)
  end.join(',')
  quoted_table_name = Utils.quote_table(table)
  records.each do |record|
    quoted_values = record.map do |c|
      ActiveRecord::Base.connection.quote(c)
    end.join(',')
    ActiveRecord::Base.connection.execute(
      "INSERT INTO #{quoted_table_name} (#{quoted_column_names}) VALUES (#{quoted_values})"
    )
  end
end

.load_table(table, data, truncate = true) ⇒ Object



71
72
73
74
75
76
# File 'lib/activerecord_dumper/serialization_helper.rb', line 71

def self.load_table(table, data, truncate = true)
  column_names = data['columns']
  truncate_table(table) if truncate
  load_records(table, column_names, data['records'])
  reset_pk_sequence!(table)
end

.reset_pk_sequence!(table_name) ⇒ Object



95
96
97
98
99
# File 'lib/activerecord_dumper/serialization_helper.rb', line 95

def self.reset_pk_sequence!(table_name)
  if ActiveRecord::Base.connection.respond_to?(:reset_pk_sequence!)
    ActiveRecord::Base.connection.reset_pk_sequence!(table_name)
  end
end

.truncate_table(table) ⇒ Object



65
66
67
68
69
# File 'lib/activerecord_dumper/serialization_helper.rb', line 65

def self.truncate_table(table)
  ActiveRecord::Base.connection.execute("TRUNCATE #{Utils.quote_table(table)}")
rescue Exception
  ActiveRecord::Base.connection.execute("DELETE FROM #{Utils.quote_table(table)}")
end