module Sequent::Core::SerializesCommand
Public Instance Methods
command()
click to toggle source
# File lib/sequent/core/command_record.rb, line 9 def command args = Sequent::Core::Oj.strict_load(command_json) Class.const_get(command_type).deserialize_from_json(args) end
command=(command)
click to toggle source
# 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 = Sequent::Core::Oj.dump(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
Private Instance Methods
serialize_attribute?(command, attribute)
click to toggle source
# File lib/sequent/core/command_record.rb, line 33 def serialize_attribute?(command, attribute) [self, command].all? { |obj| obj.respond_to?(attribute) } end