module ReuseQueryResults

Constants

VERSION

Public Class Methods

cache(connection, sql, &block) click to toggle source
# File lib/reuse_query_results.rb, line 15
def cache(connection, sql, &block)
  database = connection.instance_variable_get(:'@config')[:database]
  case sql.strip
  when (/\AINSERT INTO (?:\.*[`"]?([^.\s`"]+)[`"]?)*/i)
    return storage.clear_and_execute(database, $1, &block)
  when (/\ADELETE FROM (?:\.*[`"]?([^.\s`"]+)[`"]?)*/i)
    return storage.clear_and_execute(database, $1, &block)
  when (/\AUPDATE (?:\.*[`"]?([^.\s`"]+)[`"]?)*/i)
    return storage.clear_and_execute(database, $1, &block)
  when (/\ASELECT\s+.*FROM\s+"?([^\.\s'"]+)"?/im)
    return storage.fetch_or_execute(database, tables(sql), sql, &block)
  end
  block.call
end
storage() click to toggle source
# File lib/reuse_query_results.rb, line 6
def storage
  @storage ||= Storage.new
end
storage=(storage) click to toggle source
# File lib/reuse_query_results.rb, line 10
def storage=(storage)
  @storage = storage
end
tables(sql) click to toggle source
# File lib/reuse_query_results.rb, line 30
def tables(sql)
  sql.scan(/(?:FROM|JOIN)\s+[`"]?([^\.\s'`"]+)(?:[`"]?)/).flatten.sort
end