Class: AbstractImporter::IdMap

Inherits:
Object
  • Object
show all
Defined in:
lib/abstract_importer/id_map.rb

Instance Method Summary collapse

Constructor Details

#initializeIdMap



4
5
6
# File 'lib/abstract_importer/id_map.rb', line 4

def initialize
  @id_map = Hash.new { |hash, key| hash[key] = {} }
end

Instance Method Details

#<<(record) ⇒ Object



24
25
26
# File 'lib/abstract_importer/id_map.rb', line 24

def <<(record)
  register(record: record)
end

#apply!(depends_on, legacy_id) ⇒ Object



41
42
43
44
# 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) ⇒ Boolean



20
21
22
# File 'lib/abstract_importer/id_map.rb', line 20

def contains?(table_name, id)
  @id_map[table_name.to_sym].key?(id)
end

#dupObject



50
51
52
53
54
55
56
# 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) ⇒ Object Also known as: []



15
16
17
# File 'lib/abstract_importer/id_map.rb', line 15

def get(table_name)
  @id_map[table_name.to_sym].dup
end

#merge!(table_name, map) ⇒ Object Also known as: init



8
9
10
11
12
# 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

#register(options = {}) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
# 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

#tablesObject



46
47
48
# File 'lib/abstract_importer/id_map.rb', line 46

def tables
  @id_map.keys
end