Module: Sequent::Core::SerializesCommand

Included in:
CommandRecord
Defined in:
lib/sequent/core/command_record.rb

Instance Method Summary collapse

Instance Method Details

#commandObject



9
10
11
12
# File 'lib/sequent/core/command_record.rb', line 9

def command
  args = serialize_json? ? Sequent::Core::Oj.strict_load(command_json) : command_json
  Class.const_get(command_type).deserialize_from_json(args)
end

#command=(command) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/sequent/core/command_record.rb', line 14

def command=(command)
  self.created_at = command.created_at
  self.aggregate_id = command.aggregate_id if command.respond_to? :aggregate_id
  self.user_id = command.user_id if command.respond_to? :user_id
  self.command_type = command.class.name
  self.command_json = serialize_json? ? Sequent::Core::Oj.dump(command.attributes) : command.attributes

  # optional attributes (here for historic reasons)
  # this should be moved to a configurable CommandSerializer
  self.organization_id = command.organization_id if serialize_attribute?(command, :organization_id)
  self.event_aggregate_id = command.event_aggregate_id if serialize_attribute?(command, :event_aggregate_id)
  self.event_sequence_number = command.event_sequence_number if serialize_attribute?(
    command,
    :event_sequence_number,
  )
end