module Emque::Producing::MessageWithChangeset

Public Class Methods

included(base) click to toggle source
# File lib/emque/producing/message/message_with_changeset.rb, line 11
def self.included(base)
  base.extend(ClassMethods)
  base.send(:include, Emque::Producing::Message)
  base.send(:attribute, :partition_key, String, :default => nil, :required => false)
  base.send(:attribute, :change_set, Hash, :default => :build_change_set, :required => true)
  base.send(:private_attribute, :updated)
  base.send(:private_attribute, :original)
end

Public Instance Methods

build_change_set() click to toggle source
# File lib/emque/producing/message/message_with_changeset.rb, line 24
def build_change_set
  ChangesPayloadGenerator.new(
    {
      :original => original,
      :updated => updated,
      :translated_attrs => translated_attrs
    }
  ).execute
end
build_id() click to toggle source
# File lib/emque/producing/message/message_with_changeset.rb, line 34
def build_id
  if updated
    updated.fetch("id") { updated[:id] }
  elsif original
    original.fetch("id") { original[:id] }
  else
    raise Emque::Producing::Message::InvalidMessageError
  end
end
translated_attrs() click to toggle source
# File lib/emque/producing/message/message_with_changeset.rb, line 20
def translated_attrs
  self.class.instance_variable_get(:@attrs_to_translate)
end