Ravn::BDE::MissionRecord::

Event class

A log of all seen (generated or received from network) events.

Public Class Methods

new( ... )

Set some instance variables on initialization

# File lib/ravn/bde/mission_record/event.rb, line 33
def initialize( ... )
        super

        @fields = nil
end

Public Instance Methods

before_validation()

Attach common data to all new rows.

# File lib/ravn/bde/mission_record/event.rb, line 86
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
fields()

Get the hash of fields for the Event.

# File lib/ravn/bde/mission_record/event.rb, line 54
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
fields=( new_fields )

Set the fields options for the Operation.

# File lib/ravn/bde/mission_record/event.rb, line 68
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
validate()

Sequel::Model API – validate the object before saving

# File lib/ravn/bde/mission_record/event.rb, line 98
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
version()

The version metadata when this event was recorded.

# File lib/ravn/bde/mission_record/event.rb, line 46
many_to_one :version