class RubyEventStore::ROM::SQL::Relations::StreamEntries
Constants
- DIRECTION_MAP
- SERIALIZED_GLOBAL_STREAM_NAME
Public Instance Methods
by_event_id(event_id)
click to toggle source
# File lib/ruby_event_store/rom/adapters/sql/relations/stream_entries.rb, line 28 def by_event_id(event_id) where(event_id: event_id) end
by_event_type(types)
click to toggle source
# File lib/ruby_event_store/rom/adapters/sql/relations/stream_entries.rb, line 32 def by_event_type(types) join(:events).where(event_type: types) end
by_stream(stream)
click to toggle source
# File lib/ruby_event_store/rom/adapters/sql/relations/stream_entries.rb, line 24 def by_stream(stream) where(stream: normalize_stream_name(stream)) end
by_stream_and_event_id(stream, event_id)
click to toggle source
# File lib/ruby_event_store/rom/adapters/sql/relations/stream_entries.rb, line 36 def by_stream_and_event_id(stream, event_id) where(stream: normalize_stream_name(stream), event_id: event_id).one! end
create_changeset(tuples)
click to toggle source
# File lib/ruby_event_store/rom/adapters/sql/relations/stream_entries.rb, line 20 def create_changeset(tuples) changeset(ROM::Changesets::CreateStreamEntries, tuples) end
max_position(stream)
click to toggle source
# File lib/ruby_event_store/rom/adapters/sql/relations/stream_entries.rb, line 40 def max_position(stream) by_stream(stream).select(:position).order(Sequel.desc(:position)).first end
ordered(direction, stream, offset_entry_id = nil, stop_entry_id = nil)
click to toggle source
# File lib/ruby_event_store/rom/adapters/sql/relations/stream_entries.rb, line 49 def ordered(direction, stream, offset_entry_id = nil, stop_entry_id = nil) order, operator_offset, operator_stop = DIRECTION_MAP[direction] raise ArgumentError, 'Direction must be :forward or :backward' if order.nil? order_columns = %i[position id] order_columns.delete(:position) if stream.global? query = by_stream(stream) query = query.where { id.public_send(operator_offset, offset_entry_id) } if offset_entry_id query = query.where { id.public_send(operator_stop, stop_entry_id) } if stop_entry_id query.order { |r| order_columns.map { |c| r[:stream_entries][c].public_send(order) } } end
Private Instance Methods
normalize_stream_name(stream)
click to toggle source
# File lib/ruby_event_store/rom/adapters/sql/relations/stream_entries.rb, line 65 def normalize_stream_name(stream) stream.global? ? SERIALIZED_GLOBAL_STREAM_NAME : stream.name end