class SandthornDriverEventStore::EventQuery
Attributes
storage[R]
Public Class Methods
new(storage)
click to toggle source
# File lib/sandthorn_driver_event_store/event_query.rb, line 3 def initialize(storage) @storage = storage end
Public Instance Methods
build( stream_name:, take: 0, after_sequence_number: 0)
click to toggle source
# File lib/sandthorn_driver_event_store/event_query.rb, line 7 def build( stream_name:, take: 0, after_sequence_number: 0) query = storage.events query = add_sequence_number(query, after_sequence_number) query = add_select(query) query = add_limit(query, take) @query = query.order(:sequence_number) end
events()
click to toggle source
# File lib/sandthorn_driver_event_store/event_query.rb, line 19 def events @query.all end
Private Instance Methods
add_aggregate_types(query, aggregate_types)
click to toggle source
# File lib/sandthorn_driver_event_store/event_query.rb, line 57 def add_aggregate_types(query, aggregate_types) if aggregate_types.any? query = query.where( :aggregate_type => aggregate_types ) end query end
add_limit(query, take)
click to toggle source
# File lib/sandthorn_driver_event_store/event_query.rb, line 27 def add_limit(query, take) if take > 0 query.limit(take) else query end end
add_select(query)
click to toggle source
# File lib/sandthorn_driver_event_store/event_query.rb, line 35 def add_select(query) query.select(*select_columns) end
add_sequence_number(query, after_sequence_number)
click to toggle source
# File lib/sandthorn_driver_event_store/event_query.rb, line 53 def add_sequence_number(query, after_sequence_number) query.where { sequence_number > after_sequence_number } end
select_columns()
click to toggle source
# File lib/sandthorn_driver_event_store/event_query.rb, line 39 def select_columns aggregate_version = Sequel.qualify(storage.events_table_name, :aggregate_version) aggregate_id = Sequel.qualify(storage.events_table_name, :aggregate_id) [ :aggregate_type, aggregate_version, aggregate_id, :sequence_number, :event_name, :event_data, :timestamp ] end