class Cranium::DataImporter

Public Instance Methods

import(import_definition) click to toggle source
# File lib/cranium/data_importer.rb, line 6
def import(import_definition)
  number_of_items_imported = 0
  Cranium::Database.connection.transaction do
    number_of_items_imported = importer_for_definition(import_definition).import
    Cranium.application.apply_hook(:after_import)
  end

  record_metric import_definition.name, number_of_items_imported.to_s
end

Private Instance Methods

importer_for_definition(import_definition) click to toggle source
# File lib/cranium/data_importer.rb, line 19
def importer_for_definition(import_definition)
  if [!import_definition.merge_fields.empty?, !import_definition.delete_insert_on.empty?, !import_definition.delete_on.empty?, import_definition.truncate_insert].count(true) > 1
    raise StandardError, "Import should not combine merge_on, delete_insert_on, delete_on and truncate_insert settings"
  end

  if !import_definition.merge_fields.empty?
    Cranium::ImportStrategy::Merge.new(import_definition)
  elsif !import_definition.delete_insert_on.empty?
    Cranium::ImportStrategy::DeleteInsert.new(import_definition)
  elsif !import_definition.delete_on.empty?
    Cranium::ImportStrategy::Delete.new(import_definition)
  elsif import_definition.truncate_insert
    Cranium::ImportStrategy::TruncateInsert.new(import_definition)
  else
    Cranium::ImportStrategy::Delta.new(import_definition)
  end
end