Sha256: d49f8216fea08ea8d72077a486a9286836effa9c0000ee06e9dc63d71c90b5d2

Contents?: true

Size: 1.12 KB

Versions: 11

Compression:

Stored size: 1.12 KB

Contents

class Cranium::DataImporter

  include Cranium::Logging


  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

  def importer_for_definition(import_definition)
    if [!import_definition.merge_fields.empty?, !import_definition.delete_insert_on.empty?, import_definition.truncate_insert].count(true) > 1
      raise StandardError, "Import should not combine merge_on, delete_insert_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.truncate_insert
      Cranium::ImportStrategy::TruncateInsert.new(import_definition)
    else
      Cranium::ImportStrategy::Delta.new(import_definition)
    end
  end

end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
cranium-0.7 lib/cranium/data_importer.rb
cranium-0.6.1 lib/cranium/data_importer.rb
cranium-0.5 lib/cranium/data_importer.rb
cranium-0.4.3 lib/cranium/data_importer.rb
cranium-0.4.2 lib/cranium/data_importer.rb
cranium-0.4.1 lib/cranium/data_importer.rb
cranium-0.4 lib/cranium/data_importer.rb
cranium-0.3.1 lib/cranium/data_importer.rb
cranium-0.3.0 lib/cranium/data_importer.rb
cranium-0.2.1 lib/cranium/data_importer.rb
cranium-0.2.0 lib/cranium/data_importer.rb