@@ -23,7 +23,7 @@ def by_event_id(event_id)
2323 end
2424
2525 def by_event_type ( types )
26- join ( :events ) . where ( event_type : types )
26+ join_events . where ( event_type : types )
2727 end
2828
2929 def by_stream_and_event_id ( stream , event_id )
@@ -35,19 +35,19 @@ def max_position(stream)
3535 end
3636
3737 def newer_than ( time )
38- join ( :events ) . where { |r | r . events [ :created_at ] > time . localtime }
38+ join_events . where { |r | r . events [ :created_at ] > time . localtime }
3939 end
4040
4141 def newer_than_or_equal ( time )
42- join ( :events ) . where { |r | r . events [ :created_at ] >= time . localtime }
42+ join_events . where { |r | r . events [ :created_at ] >= time . localtime }
4343 end
4444
4545 def older_than ( time )
46- join ( :events ) . where { |r | r . events [ :created_at ] < time . localtime }
46+ join_events . where { |r | r . events [ :created_at ] < time . localtime }
4747 end
4848
4949 def older_than_or_equal ( time )
50- join ( :events ) . where { |r | r . events [ :created_at ] <= time . localtime }
50+ join_events . where { |r | r . events [ :created_at ] <= time . localtime }
5151 end
5252
5353 DIRECTION_MAP = { forward : %i[ asc > < ] , backward : %i[ desc < > ] } . freeze
@@ -74,7 +74,15 @@ def ordered(direction, stream, offset_entry_id = nil, stop_entry_id = nil, time_
7474 if event_order_columns . empty?
7575 query . order { |r | stream_order_columns . map { |c | r [ :stream_entries ] [ c ] . public_send ( order ) } }
7676 else
77- query . join ( :events ) . order { |r | event_order_columns . map { |c | r . events [ c ] . public_send ( order ) } }
77+ query . join_events . order { |r | event_order_columns . map { |c | r . events [ c ] . public_send ( order ) } }
78+ end
79+ end
80+
81+ def join_events
82+ if dataset . opts [ :join ] &.map ( &:table ) &.include? ( events . dataset . first_source_table )
83+ self
84+ else
85+ join ( :events )
7886 end
7987 end
8088 end
0 commit comments