Class: GraphQL::PersistedQueries::StoreAdapters::RedisWithLocalCacheStoreAdapter

Inherits:
BaseStoreAdapter
  • Object
show all
Defined in:
lib/graphql/persisted_queries/store_adapters/redis_with_local_cache_store_adapter.rb

Overview

Memory adapter for storing persisted queries

Constant Summary collapse

DEFAULT_REDIS_ADAPTER_CLASS =
RedisStoreAdapter
DEFAULT_MEMORY_ADAPTER_CLASS =
MemoryStoreAdapter

Instance Attribute Summary

Attributes inherited from BaseStoreAdapter

#tracers

Instance Method Summary collapse

Methods inherited from BaseStoreAdapter

#fetch_query, #save_query, #trace

Constructor Details

#initialize(redis_client: {}, expiration: nil, namespace: nil, redis_adapter_class: nil, memory_adapter_class: nil) ⇒ RedisWithLocalCacheStoreAdapter

Returns a new instance of RedisWithLocalCacheStoreAdapter.



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/graphql/persisted_queries/store_adapters/redis_with_local_cache_store_adapter.rb', line 11

def initialize(redis_client: {}, expiration: nil, namespace: nil, redis_adapter_class: nil,
               memory_adapter_class: nil)
  redis_adapter_class ||= DEFAULT_REDIS_ADAPTER_CLASS
  memory_adapter_class ||= DEFAULT_MEMORY_ADAPTER_CLASS

  @redis_adapter = redis_adapter_class.new(
    redis_client: redis_client,
    expiration: expiration,
    namespace: namespace
  )
  @memory_adapter = memory_adapter_class.new
  @name = :redis_with_local_cache
end

Instance Method Details

#fetch(hash) ⇒ Object



25
26
27
28
29
30
31
32
33
# File 'lib/graphql/persisted_queries/store_adapters/redis_with_local_cache_store_adapter.rb', line 25

def fetch(hash)
  result = @memory_adapter.fetch(hash)
  result ||= begin
    inner_result = @redis_adapter.fetch(hash)
    @memory_adapter.save(hash, inner_result) if inner_result
    inner_result
  end
  result
end

#save(hash, query) ⇒ Object



35
36
37
38
# File 'lib/graphql/persisted_queries/store_adapters/redis_with_local_cache_store_adapter.rb', line 35

def save(hash, query)
  @redis_adapter.save(hash, query)
  @memory_adapter.save(hash, query)
end