Class: Separatum::Processors::UuidChanger
- Inherits:
-
Object
- Object
- Separatum::Processors::UuidChanger
- Defined in:
- lib/separatum/processors/uuid_changer.rb
Instance Method Summary collapse
- #call(*hashes) ⇒ Object
- #collect_skip_uuid(hash) ⇒ Object
-
#initialize(**params) ⇒ UuidChanger
constructor
A new instance of UuidChanger.
- #transform(hash) ⇒ Object
Constructor Details
#initialize(**params) ⇒ UuidChanger
Returns a new instance of UuidChanger.
6 7 8 9 10 |
# File 'lib/separatum/processors/uuid_changer.rb', line 6 def initialize(**params) @skip_classes = (params[:skip_classes] || []).map(&:to_s) @skip_classes_uuid = Set[] @uuid_map = {} end |
Instance Method Details
#call(*hashes) ⇒ Object
12 13 14 15 16 |
# File 'lib/separatum/processors/uuid_changer.rb', line 12 def call(*hashes) hashes.flatten! hashes.each(&method(:collect_skip_uuid)) hashes.map(&method(:transform)) end |
#collect_skip_uuid(hash) ⇒ Object
18 19 20 21 22 23 24 |
# File 'lib/separatum/processors/uuid_changer.rb', line 18 def collect_skip_uuid(hash) return unless hash.key?(:id) return unless hash[:id].to_s.is_uuid? return unless hash.key?(:_klass) return unless @skip_classes.include?(hash[:_klass]) @skip_classes_uuid.add(hash[:id]) end |
#transform(hash) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/separatum/processors/uuid_changer.rb', line 26 def transform(hash) new_h = {} hash.each do |k, v| if v.is_a?(String) && v.is_uuid? && !@skip_classes_uuid.include?(v) unless @uuid_map[v] @uuid_map[v] = SecureRandom.uuid end new_h[k] = @uuid_map[v] else new_h[k] = v end end new_h end |