class Blazer::ResultCache
Public Class Methods
new(data_source)
click to toggle source
# File lib/blazer/result_cache.rb, line 3 def initialize(data_source) @data_source = data_source end
Public Instance Methods
delete_run(run_id)
click to toggle source
# File lib/blazer/result_cache.rb, line 15 def delete_run(run_id) delete(run_cache_key(run_id)) end
delete_statement(statement)
click to toggle source
# File lib/blazer/result_cache.rb, line 27 def delete_statement(statement) delete(statement_cache_key(statement)) if caching? end
read_run(run_id)
click to toggle source
# File lib/blazer/result_cache.rb, line 11 def read_run(run_id) read(run_cache_key(run_id)) end
read_statement(statement)
click to toggle source
# File lib/blazer/result_cache.rb, line 23 def read_statement(statement) read(statement_cache_key(statement)) if caching? end
write_run(run_id, result)
click to toggle source
# File lib/blazer/result_cache.rb, line 7 def write_run(run_id, result) write(run_cache_key(run_id), result, expires_in: 30.seconds) end
write_statement(statement, result, expires_in:)
click to toggle source
# File lib/blazer/result_cache.rb, line 19 def write_statement(statement, result, expires_in:) write(statement_cache_key(statement), result, expires_in: expires_in) if caching? end
Private Instance Methods
cache()
click to toggle source
# File lib/blazer/result_cache.rb, line 67 def cache Blazer.cache end
cache_key(key)
click to toggle source
# File lib/blazer/result_cache.rb, line 55 def cache_key(key) (["blazer", "v5", @data_source.id] + key).join("/") end
caching?()
click to toggle source
# File lib/blazer/result_cache.rb, line 51 def caching? @data_source.cache_mode != "off" end
delete(key)
click to toggle source
# File lib/blazer/result_cache.rb, line 47 def delete(key) cache.delete(key) end
read(key)
click to toggle source
# File lib/blazer/result_cache.rb, line 39 def read(key) value = cache.read(key) if value columns, rows, error, cached_at, just_cached = value Blazer::Result.new(@data_source, columns, rows, error, cached_at, just_cached) end end
run_cache_key(run_id)
click to toggle source
# File lib/blazer/result_cache.rb, line 63 def run_cache_key(run_id) cache_key(["run", run_id]) end
statement_cache_key(statement)
click to toggle source
# File lib/blazer/result_cache.rb, line 59 def statement_cache_key(statement) cache_key(["statement", Digest::SHA256.hexdigest(statement.bind_statement.to_s.gsub("\r\n", "\n") + statement.bind_values.to_json)]) end
write(key, result, expires_in:)
click to toggle source
# File lib/blazer/result_cache.rb, line 33 def write(key, result, expires_in:) raise ArgumentError, "expected Blazer::Result" unless result.is_a?(Blazer::Result) value = [result.columns, result.rows, result.error, result.cached_at, result.just_cached] cache.write(key, value, expires_in: expires_in) end