Module: ReuseQueryResults
- Defined in:
- lib/reuse_query_results.rb,
lib/reuse_query_results/railtie.rb,
lib/reuse_query_results/storage.rb,
lib/reuse_query_results/version.rb,
lib/reuse_query_results/active_record_monkey_patch.rb
Defined Under Namespace
Modules: Cache
Classes: Railtie, Storage
Constant Summary
collapse
- VERSION =
"0.1"
Class Method Summary
collapse
Class Method Details
.cache(connection, sql, &block) ⇒ Object
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# 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 ⇒ Object
6
7
8
|
# File 'lib/reuse_query_results.rb', line 6
def storage
@storage ||= Storage.new
end
|
.storage=(storage) ⇒ Object
10
11
12
|
# File 'lib/reuse_query_results.rb', line 10
def storage=(storage)
@storage = storage
end
|
.tables(sql) ⇒ Object
30
31
32
|
# File 'lib/reuse_query_results.rb', line 30
def tables(sql)
sql.scan(/(?:FROM|JOIN)\s+[`"]?([^\.\s'`"]+)(?:[`"]?)/).flatten.sort
end
|