class Emque::Producing::ChangesPayloadGenerator
Attributes
original[R]
translated_attrs[R]
updated[R]
Public Class Methods
new(changeset_data = {})
click to toggle source
# File lib/emque/producing/message/message_with_changeset.rb, line 46 def initialize(changeset_data = {}) @original = changeset_data[:original] || {} @updated = changeset_data[:updated] || {} @translated_attrs = changeset_data[:translated_attrs] || {} end
Public Instance Methods
execute()
click to toggle source
# File lib/emque/producing/message/message_with_changeset.rb, line 52 def execute translate_attrs if translated_attrs.any? {:original => original, :updated => updated, :delta => delta} end
Private Instance Methods
deep_copy(attr_set)
click to toggle source
# File lib/emque/producing/message/message_with_changeset.rb, line 66 def deep_copy(attr_set) Oj.load(Oj.dump(attr_set, :mode => :object), :mode => :object) end
delta()
click to toggle source
# File lib/emque/producing/message/message_with_changeset.rb, line 86 def delta if original.empty? :_created elsif updated.empty? :_deleted else _delta = updated .reject { |attr, val| original[attr] == val } .map { |attr, val| [attr, {:original => original[attr], :updated => val}] } Hash[_delta] end end
stringified_attrs()
click to toggle source
# File lib/emque/producing/message/message_with_changeset.rb, line 80 def stringified_attrs {}.tap do |new_hash| translated_attrs.each_pair { |k,v| new_hash[k.to_s] = v.to_s } end end
translate(attr_set)
click to toggle source
# File lib/emque/producing/message/message_with_changeset.rb, line 70 def translate(attr_set) deep_copy(attr_set).tap do |cloned_attrs| stringified_attrs.each_pair do |old_name, new_name| if cloned_attrs.key?(old_name) cloned_attrs[new_name] = cloned_attrs.delete(old_name) end end end end
translate_attrs()
click to toggle source
# File lib/emque/producing/message/message_with_changeset.rb, line 61 def translate_attrs @original = translate(original) @updated = translate(updated) end