Ravn::BDE::MissionRecord::
Event
class
A log of all seen (generated or received from network) events.
Set some instance variables on initialization
def initialize( ... )
super
@fields = nil
end
Attach common data to all new rows.
def before_validation
self.inserted_at ||= Ravn.monotonic_time
self.version ||= Ravn::BDE::MissionRecord::Version.current
self.fields ||= {}
self.log.debug "version is: %p" % [ self.version ]
super
end
Get the hash of fields for the Event
.
def fields
return @fields ||= begin
unparsed = self[ :fields ]
if unparsed
parsed = Yajl::Parser.parse( unparsed, symbolize_keys: true )
deep_freeze( parsed )
else
nil
end
end
end
Set the fields options for the Operation.
def fields=( new_fields )
new_fields = symbolify_keys( new_fields )
return if new_fields == self.fields
@fields = deep_freeze( new_fields )
self.will_change_column( :fields )
self[:fields] = Yajl::Encoder.encode( @fields )
end
Sequel::Model API – validate the object before saving
def validate
super
self.validates_integer( :inserted_at )
self.validate_associated_object( self.model.association_reflection(:version), self.version )
self.validates_presence( [:type, :fields] )
end
The version metadata when this event was recorded.