Sha256: 78c3d6a244bcbbad266b31a1463b31a1b62e6420ae914edaf78a5519d1a0fa21
Contents?: true
Size: 1.25 KB
Versions: 3
Compression:
Stored size: 1.25 KB
Contents
module AbstractImporter class IdMap class IdNotMappedError < StandardError; end def initialize @id_map = Hash.new { |hash, key| hash[key] = {} } end def init(table_name, map) table_name = table_name.to_sym @id_map[table_name] = map end def get(table_name) @id_map[table_name.to_sym].dup end alias :[] :get def contains?(table_name, id) @id_map[table_name.to_sym].key?(id) end def <<(record) register(record: record) end 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 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 end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
abstract_importer-1.2.1 | lib/abstract_importer/id_map.rb |
abstract_importer-1.2.0.rc1 | lib/abstract_importer/id_map.rb |
abstract_importer-1.1.0 | lib/abstract_importer/id_map.rb |