Module: Emque::Producing::MessageWithChangeset

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

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



4
5
6
7
8
9
10
# File 'lib/emque/producing/message/message_with_changeset.rb', line 4

def self.included(base)
  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



12
13
14
15
16
# File 'lib/emque/producing/message/message_with_changeset.rb', line 12

def build_change_set
  ChangesPayloadGenerator
    .new({:original => original, :updated => updated})
    .execute
end

#build_idObject



18
19
20
21
22
23
24
25
26
# File 'lib/emque/producing/message/message_with_changeset.rb', line 18

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