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