Module: ArCache::ActiveRecord::ConnectionAdapters::DatabaseStatements

Defined in:
lib/ar_cache/active_record/connection_adapters/abstract/database_statements.rb

Instance Method Summary collapse

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