class AbstractImporter::IdMap

Public Class Methods

new() click to toggle source
# File lib/abstract_importer/id_map.rb, line 4
def initialize
  @id_map = Hash.new { |hash, key| hash[key] = {} }
end

Public Instance Methods

<<(record) click to toggle source
# File lib/abstract_importer/id_map.rb, line 24
def <<(record)
  register(record: record)
end
[](table_name)
Alias for: get
apply!(depends_on, legacy_id) click to toggle source
# File lib/abstract_importer/id_map.rb, line 41
def apply!(depends_on, legacy_id)
  return nil if legacy_id.blank?
  @id_map[depends_on].fetch(legacy_id)
end
contains?(table_name, id) click to toggle source
# File lib/abstract_importer/id_map.rb, line 20
def contains?(table_name, id)
  @id_map[table_name.to_sym].key?(id)
end
dup() click to toggle source
# File lib/abstract_importer/id_map.rb, line 50
def dup
  IdMap.new.tap do |other|
    tables.each do |table|
      other.init table, get(table)
    end
  end
end
get(table_name) click to toggle source
# File lib/abstract_importer/id_map.rb, line 15
def get(table_name)
  @id_map[table_name.to_sym].dup
end
Also aliased as: []
init(table_name, map)
Alias for: merge!
merge!(table_name, map) click to toggle source
# File lib/abstract_importer/id_map.rb, line 8
def merge!(table_name, map)
  table_name = table_name.to_sym
  map = Hash[map.where.not(legacy_id: nil).pluck(:legacy_id, :id)] unless map.is_a?(Hash)
  @id_map[table_name].merge! map
end
Also aliased as: init
register(options={}) click to toggle source
# File lib/abstract_importer/id_map.rb, line 28
def register(options={})
  if options.key?(:record)
    record = options[:record]
    table_name, record_id, legacy_id = record.class.table_name, record.id, record.legacy_id
  end
  table_name = options[:table_name] if options.key?(:table_name)
  legacy_id = options[:legacy_id] if options.key?(:legacy_id)
  record_id = options[:record_id] if options.key?(:record_id)

  table_name = table_name.to_sym
  @id_map[table_name][legacy_id] = record_id
end
tables() click to toggle source
# File lib/abstract_importer/id_map.rb, line 46
def tables
  @id_map.keys
end