class GraphQL::PersistedQueries::StoreAdapters::DEFAULT_REDIS_ADAPTER_CLASS
Redis adapter for storing persisted queries
Constants
- DEFAULT_EXPIRATION
- DEFAULT_NAMESPACE
Public Class Methods
new(redis_client: {}, expiration: nil, namespace: nil)
click to toggle source
# File lib/graphql/persisted_queries/store_adapters/redis_store_adapter.rb, line 13 def initialize(redis_client: {}, expiration: nil, namespace: nil) @redis_proc = build_redis_proc(redis_client) @expiration = expiration || DEFAULT_EXPIRATION @namespace = namespace || DEFAULT_NAMESPACE @name = :redis end
Protected Instance Methods
fetch(hash)
click to toggle source
# File lib/graphql/persisted_queries/store_adapters/redis_store_adapter.rb, line 22 def fetch(hash) @redis_proc.call { |redis| redis.get(key_for(hash)) } end
save(hash, query)
click to toggle source
# File lib/graphql/persisted_queries/store_adapters/redis_store_adapter.rb, line 26 def save(hash, query) @redis_proc.call { |redis| redis.set(key_for(hash), query, ex: @expiration) } end
Private Instance Methods
build_redis_proc(redis_client)
click to toggle source
rubocop: disable Metrics/MethodLength rubocop: disable Metrics/CyclomaticComplexity rubocop: disable Metrics/PerceivedComplexity
# File lib/graphql/persisted_queries/store_adapters/redis_store_adapter.rb, line 39 def build_redis_proc(redis_client) if redis_client.is_a?(Hash) build_redis_proc(RedisClientBuilder.new(**redis_client).build) elsif redis_client.is_a?(Proc) redis_client elsif defined?(::Redis) && redis_client.is_a?(::Redis) proc { |&b| b.call(redis_client) } elsif defined?(ConnectionPool) && redis_client.is_a?(ConnectionPool) proc { |&b| redis_client.with { |r| b.call(r) } } else raise ArgumentError, ":redis_client accepts Redis, ConnectionPool, Hash or Proc only" end end
key_for(hash)
click to toggle source
# File lib/graphql/persisted_queries/store_adapters/redis_store_adapter.rb, line 32 def key_for(hash) "#{@namespace}:#{hash}" end