Module: RedisMemo::MemoizeQuery::CachedSelect::ConnectionAdapter

Defined in:
lib/redis_memo/memoize_query/cached_select/connection_adapter.rb

Instance Method Summary collapse

Instance Method Details

#cacheable_query(*args) ⇒ Object



5
6
7
8
9
10
11
12
# File 'lib/redis_memo/memoize_query/cached_select/connection_adapter.rb', line 5

def cacheable_query(*args)
  query, binds = super(*args)

  # Persist the arel object to StatementCache#execute
  query.instance_variable_set(:@__redis_memo_memoize_query_memoize_query_arel, args.last)

  [query, binds]
end

#exec_query(*args) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/redis_memo/memoize_query/cached_select/connection_adapter.rb', line 14

def exec_query(*args)
  # An Arel AST in Thread local is set prior to supported query methods
  if !RedisMemo.without_memo? &&
      RedisMemo::MemoizeQuery::CachedSelect.extract_bind_params(args[0])
    # [Reids $model Load] $sql $binds
    RedisMemo::DefaultOptions.logger&.info(
      "[Redis] \u001b[36;1m#{args[1]} \u001b[34;1m#{args[0]}\u001b[0m #{
        args[2].map { |bind| [bind.name, bind.value_for_database]}
      }"
    )

    super(*args)
  else
    RedisMemo.without_memo { super(*args) }
  end
end

#select_all(*args) ⇒ Object



31
32
33
34
35
36
37
38
39
# File 'lib/redis_memo/memoize_query/cached_select/connection_adapter.rb', line 31

def select_all(*args)
  if args[0].is_a?(Arel::SelectManager)
    RedisMemo::MemoizeQuery::CachedSelect.current_query = args[0]
  end

  super(*args)
ensure
  RedisMemo::MemoizeQuery::CachedSelect.reset_current_query
end