Class: GraphQL::PersistedQueries::StoreAdapters::BaseStoreAdapter

Inherits:
Object
  • Object
show all
Includes:
Tracing::Traceable
Defined in:
lib/graphql/persisted_queries/store_adapters/base_store_adapter.rb

Overview

Base class for all store adapters

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(**_options) ⇒ BaseStoreAdapter

Returns a new instance of BaseStoreAdapter.



11
12
13
# File 'lib/graphql/persisted_queries/store_adapters/base_store_adapter.rb', line 11

def initialize(**_options)
  @name = :base
end

Instance Attribute Details

#tracers=(value) ⇒ Object (writeonly)

Sets the attribute tracers

Parameters:

  • value

    the value to set the attribute tracers to.



9
10
11
# File 'lib/graphql/persisted_queries/store_adapters/base_store_adapter.rb', line 9

def tracers=(value)
  @tracers = value
end

Instance Method Details

#fetch(_hash) ⇒ Object

Raises:

  • (NotImplementedError)


30
31
32
# File 'lib/graphql/persisted_queries/store_adapters/base_store_adapter.rb', line 30

def fetch(_hash)
  raise NotImplementedError
end

#fetch_query(hash, options = {}) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/graphql/persisted_queries/store_adapters/base_store_adapter.rb', line 15

def fetch_query(hash, options = {})
  compiled_query = options[:compiled_query] || false
  key = build_key(hash, compiled_query)

  fetch(key).tap do |result|
    event = result ? "cache_hit" : "cache_miss"
    trace("fetch_query.#{event}", adapter: @name)
  end
end

#save(_hash, _query) ⇒ Object

Raises:

  • (NotImplementedError)


34
35
36
# File 'lib/graphql/persisted_queries/store_adapters/base_store_adapter.rb', line 34

def save(_hash, _query)
  raise NotImplementedError
end

#save_query(hash, query, compiled_query: false) ⇒ Object



25
26
27
28
# File 'lib/graphql/persisted_queries/store_adapters/base_store_adapter.rb', line 25

def save_query(hash, query, compiled_query: false)
  key = build_key(hash, compiled_query)
  trace("save_query", adapter: @name) { save(key, query) }
end

#trace(key, metadata) ⇒ Object



38
39
40
41
42
43
44
45
# File 'lib/graphql/persisted_queries/store_adapters/base_store_adapter.rb', line 38

def trace(key, )
  if @tracers
    key = "persisted_queries.#{key}"
    block_given? ? super : super {}
  elsif block_given?
    yield
  end
end