Sha256: 8341151cafb5f4eb599daee8920322dc575eb63d7c227e66e6f35ff26cbf700c
Contents?: true
Size: 876 Bytes
Versions: 13
Compression:
Stored size: 876 Bytes
Contents
class Cranium::ImportStrategy::DeleteInsert < Cranium::ImportStrategy::Base def import_from(source_table) @source_table = source_table delete_existing_records import_new_records database[@source_table].count end private 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 def import_new_records database.run database[target_table].insert_sql(target_fields, database[@source_table].select(*source_fields)) end def delete_by_fields Cranium::Sequel::Hash[delete_field_mapping] end def delete_field_mapping import_definition.field_associations.select { |_, target_field| import_definition.delete_insert_on.include? target_field } end end
Version data entries
13 entries across 13 versions & 1 rubygems