class GraphQL::PersistedQueries::StoreAdapters::MemcachedStoreAdapter

Redis adapter for storing persisted queries

Constants

DEFAULT_EXPIRATION
DEFAULT_NAMESPACE

Public Class Methods

new(dalli_client:, expiration: nil, namespace: nil) click to toggle source
# File lib/graphql/persisted_queries/store_adapters/memcached_store_adapter.rb, line 13
def initialize(dalli_client:, expiration: nil, namespace: nil)
  @dalli_proc = build_dalli_proc(dalli_client)
  @expiration = expiration || DEFAULT_EXPIRATION
  @namespace = namespace || DEFAULT_NAMESPACE
  @name = :memcached
end

Protected Instance Methods

fetch(hash) click to toggle source
# File lib/graphql/persisted_queries/store_adapters/memcached_store_adapter.rb, line 22
def fetch(hash)
  @dalli_proc.call { |dalli| dalli.get(key_for(hash)) }
end
save(hash, query) click to toggle source
# File lib/graphql/persisted_queries/store_adapters/memcached_store_adapter.rb, line 26
def save(hash, query)
  @dalli_proc.call { |dalli| dalli.set(key_for(hash), query, @expiration) }
end

Private Instance Methods

build_dalli_proc(dalli_client) click to toggle source
# File lib/graphql/persisted_queries/store_adapters/memcached_store_adapter.rb, line 36
def build_dalli_proc(dalli_client)
  if dalli_client.is_a?(Hash)
    build_dalli_proc(MemcachedClientBuilder.new(**dalli_client).build)
  elsif dalli_client.is_a?(Proc)
    dalli_client
  elsif defined?(::Dalli::Client) && dalli_client.is_a?(::Dalli::Client)
    proc { |&b| b.call(dalli_client) }
  else
    raise ArgumentError, ":dalli_client accepts Dalli::Client, Hash or Proc only"
  end
end
key_for(hash) click to toggle source
# File lib/graphql/persisted_queries/store_adapters/memcached_store_adapter.rb, line 32
def key_for(hash)
  "#{@namespace}:#{hash}"
end