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