Class: AbstractImporter::IdMap
- Inherits:
-
Object
- Object
- AbstractImporter::IdMap
show all
- Defined in:
- lib/abstract_importer/id_map.rb
Defined Under Namespace
Classes: IdNotMappedError
Instance Method Summary
collapse
Constructor Details
#initialize ⇒ IdMap
Returns a new instance of IdMap.
6
7
8
|
# File 'lib/abstract_importer/id_map.rb', line 6
def initialize
@id_map = Hash.new { |hash, key| hash[key] = {} }
end
|
Instance Method Details
#<<(record) ⇒ Object
32
33
34
|
# File 'lib/abstract_importer/id_map.rb', line 32
def <<(record)
register(record: record)
end
|
#apply!(legacy_id, depends_on) ⇒ Object
49
50
51
52
53
54
|
# File 'lib/abstract_importer/id_map.rb', line 49
def apply!(legacy_id, depends_on)
return nil if legacy_id.blank?
id_map = @id_map[depends_on]
raise IdNotMappedError.new unless id_map.key?(legacy_id)
id_map[legacy_id]
end
|
#contains?(table_name, id) ⇒ Boolean
28
29
30
|
# File 'lib/abstract_importer/id_map.rb', line 28
def contains?(table_name, id)
@id_map[table_name.to_sym].key?(id)
end
|
#get(table_name) ⇒ Object
Also known as:
[]
23
24
25
|
# File 'lib/abstract_importer/id_map.rb', line 23
def get(table_name)
@id_map[table_name.to_sym].dup
end
|
#init(table_name, query) ⇒ Object
12
13
14
15
16
|
# File 'lib/abstract_importer/id_map.rb', line 12
def init(table_name, query)
table_name = table_name.to_sym
@id_map[table_name] = {}
merge! table_name, query
end
|
#merge!(table_name, query) ⇒ Object
18
19
20
21
|
# File 'lib/abstract_importer/id_map.rb', line 18
def merge!(table_name, query)
table_name = table_name.to_sym
@id_map[table_name].merge! Hash[query.pluck(:legacy_id, :id)]
end
|
#register(options = {}) ⇒ Object
36
37
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/abstract_importer/id_map.rb', line 36
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
|