Module: Emque::Producing::MessageWithChangeset

Defined in:
lib/emque/producing/message/message_with_changeset.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



11
12
13
14
15
16
17
18
# 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

Instance Method Details

#build_change_setObject



24
25
26
27
28
29
30
31
32
# 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_idObject



34
35
36
37
38
39
40
41
42
# 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_attrsObject



20
21
22
# File 'lib/emque/producing/message/message_with_changeset.rb', line 20

def translated_attrs
  self.class.instance_variable_get(:@attrs_to_translate)
end