class Cranium::ImportStrategy::DeleteInsert

Public Instance Methods

import_from(source_table) click to toggle source
# File lib/cranium/import_strategy/delete_insert.rb, line 3
def import_from(source_table)
  @source_table = source_table

  delete_existing_records
  import_new_records
  database[@source_table].count
end

Private Instance Methods

delete_by_fields() click to toggle source
# File lib/cranium/import_strategy/delete_insert.rb, line 30
def delete_by_fields
  Cranium::Sequel::Hash[delete_field_mapping]
end
delete_existing_records() click to toggle source
# File lib/cranium/import_strategy/delete_insert.rb, line 15
def delete_existing_records
  database.
      from(Sequel.as(target_table, "target"), Sequel.as(@source_table, "source")).
      where(delete_by_fields.qualify keys_with: :source, values_with: :target).
      delete
end
delete_field_mapping() click to toggle source
# File lib/cranium/import_strategy/delete_insert.rb, line 36
def delete_field_mapping
  import_definition.field_associations.select { |_, target_field| import_definition.delete_insert_on.include? target_field }
end
import_new_records() click to toggle source
# File lib/cranium/import_strategy/delete_insert.rb, line 24
def import_new_records
  database.run database[target_table].insert_sql(target_fields, database[@source_table].select(*source_fields))
end