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
- #create_records(record_class, array_of_value_hashes) ⇒ 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
- #execute(statement) ⇒ 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
52 53 54 55 56 57 58 59 60 61 |
# File 'lib/sequent/core/record_sessions/active_record_session.rb', line 52 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) record.created_at = created_at if record.respond_to?(:created_at) end yield record record.save! record end |
#create_record(record_class, values) {|record| ... } ⇒ Object
30 31 32 33 34 35 |
# File 'lib/sequent/core/record_sessions/active_record_session.rb', line 30 def create_record(record_class, values) record = new_record(record_class, values) yield record if block_given? record.save! record end |
#create_records(record_class, array_of_value_hashes) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/sequent/core/record_sessions/active_record_session.rb', line 37 def create_records(record_class, array_of_value_hashes) table = record_class.arel_table query = array_of_value_hashes.map do |values| insert_manager = new_insert_manager insert_manager.into(table) insert_manager.insert(values.map do |key, value| convert_to_values(key, table, value) end) insert_manager.to_sql end.join(";") execute(query) end |
#delete_all_records(record_class, where_clause) ⇒ Object
71 72 73 |
# File 'lib/sequent/core/record_sessions/active_record_session.rb', line 71 def delete_all_records(record_class, where_clause) record_class.unscoped.where(where_clause).delete_all end |
#delete_record(_, record) ⇒ Object
75 76 77 |
# File 'lib/sequent/core/record_sessions/active_record_session.rb', line 75 def delete_record(_, record) record.destroy end |
#do_with_record(record_class, where_clause) {|record| ... } ⇒ Object
90 91 92 93 94 |
# File 'lib/sequent/core/record_sessions/active_record_session.rb', line 90 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
83 84 85 86 87 88 |
# File 'lib/sequent/core/record_sessions/active_record_session.rb', line 83 def do_with_records(record_class, where_clause) record_class.unscoped.where(where_clause).each do |record| yield record record.save! end end |
#execute(statement) ⇒ Object
26 27 28 |
# File 'lib/sequent/core/record_sessions/active_record_session.rb', line 26 def execute(statement) ActiveRecord::Base.connection.execute(statement) end |
#find_records(record_class, where_clause) ⇒ Object
96 97 98 |
# File 'lib/sequent/core/record_sessions/active_record_session.rb', line 96 def find_records(record_class, where_clause) record_class.unscoped.where(where_clause) end |
#get_record(record_class, where_clause) ⇒ Object
67 68 69 |
# File 'lib/sequent/core/record_sessions/active_record_session.rb', line 67 def get_record(record_class, where_clause) record_class.unscoped.where(where_clause).first end |
#get_record!(record_class, where_clause) ⇒ Object
63 64 65 |
# File 'lib/sequent/core/record_sessions/active_record_session.rb', line 63 def get_record!(record_class, where_clause) record_class.unscoped.where(where_clause).first! end |
#last_record(record_class, where_clause) ⇒ Object
100 101 102 |
# File 'lib/sequent/core/record_sessions/active_record_session.rb', line 100 def last_record(record_class, where_clause) record_class.unscoped.where(where_clause).last end |
#update_all_records(record_class, where_clause, updates) ⇒ Object
79 80 81 |
# File 'lib/sequent/core/record_sessions/active_record_session.rb', line 79 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
14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/sequent/core/record_sessions/active_record_session.rb', line 14 def update_record(record_class, event, where_clause = {aggregate_id: event.aggregate_id}, = {}, &block) 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 record.updated_at = event.created_at if record.respond_to?(:updated_at) yield record if block_given? update_sequence_number = .key?(:update_sequence_number) ? [:update_sequence_number] : record.respond_to?(:sequence_number=) record.sequence_number = event.sequence_number if update_sequence_number record.save! end |