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