Class: RubyEventStore::ROM::Relations::Events
- Inherits:
-
Object
- Object
- RubyEventStore::ROM::Relations::Events
- Defined in:
- lib/ruby_event_store/rom/relations/events.rb
Constant Summary collapse
- DIRECTION_MAP =
{ forward: %i[asc > <], backward: %i[desc < >] }.freeze
Instance Method Summary collapse
- #by_event_id(event_id) ⇒ Object
- #by_event_type(types) ⇒ Object
- #create_changeset(tuples) ⇒ Object
- #newer_than(time) ⇒ Object
- #newer_than_or_equal(time) ⇒ Object
- #older_than(time) ⇒ Object
- #older_than_or_equal(time) ⇒ Object
- #ordered(direction, offset_entry_id = nil, stop_entry_id = nil, time_sort_by = nil) ⇒ Object
- #update_changeset(tuples) ⇒ Object
Instance Method Details
#by_event_id(event_id) ⇒ Object
29 30 31 |
# File 'lib/ruby_event_store/rom/relations/events.rb', line 29 def by_event_id(event_id) where(event_id: event_id) end |
#by_event_type(types) ⇒ Object
33 34 35 |
# File 'lib/ruby_event_store/rom/relations/events.rb', line 33 def by_event_type(types) where(event_type: types) end |
#create_changeset(tuples) ⇒ Object
21 22 23 |
# File 'lib/ruby_event_store/rom/relations/events.rb', line 21 def create_changeset(tuples) events.changeset(Changesets::CreateEvents, tuples) end |
#newer_than(time) ⇒ Object
37 38 39 |
# File 'lib/ruby_event_store/rom/relations/events.rb', line 37 def newer_than(time) where { |r| r.events[:created_at] > time.localtime } end |
#newer_than_or_equal(time) ⇒ Object
41 42 43 |
# File 'lib/ruby_event_store/rom/relations/events.rb', line 41 def newer_than_or_equal(time) where { |r| r.events[:created_at] >= time.localtime } end |
#older_than(time) ⇒ Object
45 46 47 |
# File 'lib/ruby_event_store/rom/relations/events.rb', line 45 def older_than(time) where { |r| r.events[:created_at] < time.localtime } end |
#older_than_or_equal(time) ⇒ Object
49 50 51 |
# File 'lib/ruby_event_store/rom/relations/events.rb', line 49 def older_than_or_equal(time) where { |r| r.events[:created_at] <= time.localtime } end |
#ordered(direction, offset_entry_id = nil, stop_entry_id = nil, time_sort_by = nil) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/ruby_event_store/rom/relations/events.rb', line 58 def ordered(direction, offset_entry_id = nil, stop_entry_id = nil, time_sort_by = nil) order, operator_offset, operator_stop = DIRECTION_MAP[direction] raise ArgumentError, "Direction must be :forward or :backward" if order.nil? event_order_columns = [:id] case time_sort_by when :as_at event_order_columns.unshift :created_at when :as_of event_order_columns.unshift :valid_at end query = self 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(*event_order_columns.map { |c| events[c].public_send(order) }) end |
#update_changeset(tuples) ⇒ Object
25 26 27 |
# File 'lib/ruby_event_store/rom/relations/events.rb', line 25 def update_changeset(tuples) events.changeset(Changesets::UpdateEvents, tuples) end |