Class: Sequent::Core::RecordSessions::ActiveRecordSession
- Inherits:
-
Object
- Object
- Sequent::Core::RecordSessions::ActiveRecordSession
- Defined in:
- lib/sequent/core/record_sessions/active_record_session.rb
Overview
Session objects are used to update view state
The ActiveRecordSession object can be used when you use ActiveRecord as view state store.
Instance Method Summary collapse
- #create_or_update_record(record_class, values, created_at = Time.now) {|record| ... } ⇒ Object
- #create_record(record_class, values) {|record| ... } ⇒ Object
- #delete_all_records(record_class, where_clause) ⇒ Object
- #delete_record(_, record) ⇒ Object
- #do_with_record(record_class, where_clause) {|record| ... } ⇒ Object
- #do_with_records(record_class, where_clause) ⇒ Object
- #find_records(record_class, where_clause) ⇒ Object
- #get_record(record_class, where_clause) ⇒ Object
- #get_record!(record_class, where_clause) ⇒ Object
- #last_record(record_class, where_clause) ⇒ Object
- #update_all_records(record_class, where_clause, updates) ⇒ Object
- #update_record(record_class, event, where_clause = {aggregate_id: event.aggregate_id}, options = {}) {|record| ... } ⇒ Object
Instance Method Details
#create_or_update_record(record_class, values, created_at = Time.now) {|record| ... } ⇒ Object
31 32 33 34 35 36 37 38 39 |
# File 'lib/sequent/core/record_sessions/active_record_session.rb', line 31 def create_or_update_record(record_class, values, created_at = Time.now) record = get_record(record_class, values) unless record record = new_record(record_class, values.merge(created_at: created_at)) end yield record record.save! record end |
#create_record(record_class, values) {|record| ... } ⇒ Object
24 25 26 27 28 29 |
# File 'lib/sequent/core/record_sessions/active_record_session.rb', line 24 def create_record(record_class, values) record = new_record(record_class, values) yield record if block_given? record.save! record end |
#delete_all_records(record_class, where_clause) ⇒ Object
49 50 51 |
# File 'lib/sequent/core/record_sessions/active_record_session.rb', line 49 def delete_all_records(record_class, where_clause) record_class.unscoped.where(where_clause).delete_all end |
#delete_record(_, record) ⇒ Object
53 54 55 |
# File 'lib/sequent/core/record_sessions/active_record_session.rb', line 53 def delete_record(_, record) record.destroy end |
#do_with_record(record_class, where_clause) {|record| ... } ⇒ Object
68 69 70 71 72 |
# File 'lib/sequent/core/record_sessions/active_record_session.rb', line 68 def do_with_record(record_class, where_clause) record = record_class.unscoped.where(where_clause).first! yield record record.save! end |
#do_with_records(record_class, where_clause) ⇒ Object
61 62 63 64 65 66 |
# File 'lib/sequent/core/record_sessions/active_record_session.rb', line 61 def do_with_records(record_class, where_clause) record_class.unscoped.where(where_clause).each do |record| yield record record.save! end end |
#find_records(record_class, where_clause) ⇒ Object
74 75 76 |
# File 'lib/sequent/core/record_sessions/active_record_session.rb', line 74 def find_records(record_class, where_clause) record_class.unscoped.where(where_clause) end |
#get_record(record_class, where_clause) ⇒ Object
45 46 47 |
# File 'lib/sequent/core/record_sessions/active_record_session.rb', line 45 def get_record(record_class, where_clause) record_class.unscoped.where(where_clause).first end |
#get_record!(record_class, where_clause) ⇒ Object
41 42 43 |
# File 'lib/sequent/core/record_sessions/active_record_session.rb', line 41 def get_record!(record_class, where_clause) record_class.unscoped.where(where_clause).first! end |
#last_record(record_class, where_clause) ⇒ Object
78 79 80 |
# File 'lib/sequent/core/record_sessions/active_record_session.rb', line 78 def last_record(record_class, where_clause) record_class.unscoped.where(where_clause).last end |
#update_all_records(record_class, where_clause, updates) ⇒ Object
57 58 59 |
# File 'lib/sequent/core/record_sessions/active_record_session.rb', line 57 def update_all_records(record_class, where_clause, updates) record_class.unscoped.where(where_clause).update_all(updates) end |
#update_record(record_class, event, where_clause = {aggregate_id: event.aggregate_id}, options = {}) {|record| ... } ⇒ Object
13 14 15 16 17 18 19 20 21 22 |
# File 'lib/sequent/core/record_sessions/active_record_session.rb', line 13 def update_record(record_class, event, where_clause = {aggregate_id: event.aggregate_id}, = {}, &block) defaults = {update_sequence_number: true} args = defaults.merge() record = record_class.unscoped.where(where_clause).first raise("Record of class #{record_class} with where clause #{where_clause} not found while handling event #{event}") unless record yield record if block_given? record.sequence_number = event.sequence_number if args[:update_sequence_number] record.updated_at = event.created_at if record.respond_to?(:updated_at) record.save! end |