Class: Sequent::Core::Projector
- Inherits:
-
Object
- Object
- Sequent::Core::Projector
- Extended by:
- ActiveSupport::DescendantsTracker, Forwardable
- Includes:
- Helpers::MessageHandler, Migratable
- Defined in:
- lib/sequent/core/projector.rb
Overview
Projectors listen to events and update the view state as they see fit.
Example of updating view state, in this case the InvoiceRecord table representing an Invoice
class InvoiceProjector < Sequent::Core::Projector
manages_tables InvoiceRecord
on InvoiceCreated do |event|
create_record(
InvoiceRecord,
recipient: event.recipient,
amount: event.amount
)
end
end
Please note that the actual storage is abstracted away in the persistors. Due to this abstraction you can not traverse persist or traverse child objects like you are used to do with ActiveRecord. The following example will not work:
invoice_record.line_item_records << create_record(LineItemRecord, ...)
In this case you should simply do:
create_record(LineItemRecord, invoice_id: invoice_record.aggregate_id)
Class Attribute Summary collapse
-
.abstract_class ⇒ Object
Returns the value of attribute abstract_class.
-
.skip_autoregister ⇒ Object
Returns the value of attribute skip_autoregister.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(persistor = Sequent::Core::Persistors::ActiveRecordPersistor.new) ⇒ Projector
constructor
A new instance of Projector.
Methods included from Migratable
all, included, #managed_tables, none, projectors
Methods included from Helpers::MessageHandler
#dispatch_message, #handle_message, included
Constructor Details
#initialize(persistor = Sequent::Core::Persistors::ActiveRecordPersistor.new) ⇒ Projector
Returns a new instance of Projector.
95 96 97 98 |
# File 'lib/sequent/core/projector.rb', line 95 def initialize(persistor = Sequent::Core::Persistors::ActiveRecordPersistor.new) ensure_valid! @persistor = persistor end |
Class Attribute Details
.abstract_class ⇒ Object
Returns the value of attribute abstract_class.
92 93 94 |
# File 'lib/sequent/core/projector.rb', line 92 def abstract_class @abstract_class end |
.skip_autoregister ⇒ Object
Returns the value of attribute skip_autoregister.
92 93 94 |
# File 'lib/sequent/core/projector.rb', line 92 def skip_autoregister @skip_autoregister end |
Class Method Details
.replay_persistor ⇒ Object
100 101 102 |
# File 'lib/sequent/core/projector.rb', line 100 def self.replay_persistor nil end |