Sha256: e16325871eba14cb663e61016c8d051c0becd5a5e63fd46cb359e82ef802ce7d
Contents?: true
Size: 1.44 KB
Versions: 2
Compression:
Stored size: 1.44 KB
Contents
module SandthornDriverSequel2 class EventQuery def initialize(storage) @storage = storage end 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 def events @query.all end private attr_reader :storage def add_limit(query, take) if take > 0 query.limit(take) else query end end def add_select(query) query.select(*select_columns) end 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 def add_sequence_number(query, after_sequence_number) query.where { sequence_number > after_sequence_number } end def add_aggregate_types(query, aggregate_types) if aggregate_types.any? query = query.where( :aggregate_type => aggregate_types ) end query end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
sandthorn_driver_sequel_2-0.0.2 | lib/sandthorn_driver_sequel_2/event_query.rb |
sandthorn_driver_sequel_2-0.0.1 | lib/sandthorn_driver_sequel_2/event_query.rb |