class SandthornDriverSequel::EventQuery
Attributes
storage[R]
Public Class Methods
new(storage)
click to toggle source
# File lib/sandthorn_driver_sequel/event_query.rb, line 3 def initialize(storage) @storage = storage end
Public Instance Methods
build( aggregate_types: [], take: 0, after_sequence_number: 0)
click to toggle source
# File lib/sandthorn_driver_sequel/event_query.rb, line 7 def build( aggregate_types: [], take: 0, after_sequence_number: 0) aggregate_types.map!(&:to_s) query = storage.events query = add_aggregate_types(query, aggregate_types) 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_sequel/event_query.rb, line 22 def events @query.all end
Private Instance Methods
add_aggregate_types(query, aggregate_types)
click to toggle source
# File lib/sandthorn_driver_sequel/event_query.rb, line 60 def add_aggregate_types(query, aggregate_types) if aggregate_types.any? query.join(storage.aggregates_table_name, id: :aggregate_table_id, aggregate_type: aggregate_types) else query.join(storage.aggregates_table_name, id: :aggregate_table_id) end end
add_limit(query, take)
click to toggle source
# File lib/sandthorn_driver_sequel/event_query.rb, line 30 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_sequel/event_query.rb, line 38 def add_select(query) query.select(*select_columns) end
add_sequence_number(query, after_sequence_number)
click to toggle source
# File lib/sandthorn_driver_sequel/event_query.rb, line 56 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_sequel/event_query.rb, line 42 def select_columns rel = Sequel.qualify(storage.events_table_name, :aggregate_version) [ :aggregate_type, rel, :aggregate_id, :sequence_number, :event_name, :event_data, :event_metadata, :timestamp ] end