Module: ArCache::ActiveRecord::ConnectionAdapters::DatabaseStatements
- Defined in:
- lib/ar_cache/active_record/connection_adapters/abstract/database_statements.rb
Instance Method Summary collapse
- #delete(arel) ⇒ Object
- #insert(arel) ⇒ Object (also: #create)
- #select_all(arel) ⇒ Object
- #truncate(table_name) ⇒ Object
- #truncate_tables(*table_names) ⇒ Object
- #update(arel) ⇒ Object
Instance Method Details
#delete(arel) ⇒ Object
42 43 44 |
# File 'lib/ar_cache/active_record/connection_adapters/abstract/database_statements.rb', line 42 def delete(arel, ...) super.tap { |num| update_ar_cache(arel) unless num.zero? } end |
#insert(arel) ⇒ Object Also known as: create
23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/ar_cache/active_record/connection_adapters/abstract/database_statements.rb', line 23 def insert(arel, ...) super.tap do if arel.is_a?(String) sql = arel.downcase ArCache::Table.all.each do |table| transaction_manager.add_transaction_table(table.name) if sql.include?(table.name) end else transaction_manager.add_transaction_table(arel.ast.relation.name) end end end |
#select_all(arel) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/ar_cache/active_record/connection_adapters/abstract/database_statements.rb', line 7 def select_all(arel, ...) result = super klass, select_values = arel.try(:klass_and_select_values) return result if klass.nil? klass.ar_cache_table.write(result.to_a) if select_values result.to_a.each { |r| r.slice!(*select_values) } elsif klass.ignored_columns.any? result.to_a.each { |r| r.except!(*klass.ignored_columns) } end result end |
#truncate(table_name) ⇒ Object
46 47 48 |
# File 'lib/ar_cache/active_record/connection_adapters/abstract/database_statements.rb', line 46 def truncate(table_name, ...) super.tap { update_ar_cache_by_table(table_name) } end |
#truncate_tables(*table_names) ⇒ Object
50 51 52 53 54 |
# File 'lib/ar_cache/active_record/connection_adapters/abstract/database_statements.rb', line 50 def truncate_tables(*table_names) super.tap do table_names.each { |table_name| update_ar_cache_by_table(table_name) } end end |
#update(arel) ⇒ Object
38 39 40 |
# File 'lib/ar_cache/active_record/connection_adapters/abstract/database_statements.rb', line 38 def update(arel, ...) super.tap { |num| update_ar_cache(arel) unless num.zero? } end |