Module: GraphQL::PersistedQueries::SchemaPatch

Defined in:
lib/graphql/persisted_queries/schema_patch.rb

Overview

Patches GraphQL::Schema to support persisted queries

Defined Under Namespace

Modules: MultiplexPatch

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#persisted_queries_tracing_enabled=(value) ⇒ Object (writeonly)

Sets the attribute persisted_queries_tracing_enabled

Parameters:

  • value

    the value to set the attribute persisted_queries_tracing_enabled to.



51
52
53
# File 'lib/graphql/persisted_queries/schema_patch.rb', line 51

def persisted_queries_tracing_enabled=(value)
  @persisted_queries_tracing_enabled = value
end

Class Method Details

.patch(schema, compiled_queries) ⇒ Object



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

def patch(schema, compiled_queries)
  schema.singleton_class.prepend(SchemaPatch)

  if compiled_queries
    configure_compiled_queries(schema)
  else
    schema.singleton_class.class_eval { alias_method :multiplex_original, :multiplex }
    schema.singleton_class.prepend(MultiplexPatch)
  end
end

Instance Method Details

#configure_persisted_query_error_handler(handler) ⇒ Object



67
68
69
# File 'lib/graphql/persisted_queries/schema_patch.rb', line 67

def configure_persisted_query_error_handler(handler)
  @persisted_query_error_handler = ErrorHandlers.build(handler)
end

#configure_persisted_query_store(store, **options) ⇒ Object



53
54
55
56
57
# File 'lib/graphql/persisted_queries/schema_patch.rb', line 53

def configure_persisted_query_store(store, **options)
  @persisted_query_store = StoreAdapters.build(store, **options).tap do |adapter|
    adapter.tracers = tracers if persisted_queries_tracing_enabled?
  end
end

#hash_generator=(hash_generator) ⇒ Object



71
72
73
# File 'lib/graphql/persisted_queries/schema_patch.rb', line 71

def hash_generator=(hash_generator)
  @hash_generator_proc = HashGeneratorBuilder.new(hash_generator).build
end

#hash_generator_procObject



75
76
77
# File 'lib/graphql/persisted_queries/schema_patch.rb', line 75

def hash_generator_proc
  @hash_generator_proc ||= find_inherited_value(:hash_generator_proc)
end

#persisted_queries_tracing_enabled?Boolean

Returns:

  • (Boolean)


86
87
88
89
# File 'lib/graphql/persisted_queries/schema_patch.rb', line 86

def persisted_queries_tracing_enabled?
  @persisted_queries_tracing_enabled ||=
    find_inherited_value(:persisted_queries_tracing_enabled?)
end

#persisted_query_error_handlerObject



63
64
65
# File 'lib/graphql/persisted_queries/schema_patch.rb', line 63

def persisted_query_error_handler
  @persisted_query_error_handler ||= find_inherited_value(:persisted_query_error_handler)
end

#persisted_query_storeObject



59
60
61
# File 'lib/graphql/persisted_queries/schema_patch.rb', line 59

def persisted_query_store
  @persisted_query_store ||= find_inherited_value(:persisted_query_store)
end

#tracer(name) ⇒ Object



91
92
93
94
95
96
97
98
# File 'lib/graphql/persisted_queries/schema_patch.rb', line 91

def tracer(name)
  super.tap do
    # Since tracers can be set before *and* after our plugin hooks in,
    # we need to set tracers both when this plugin gets initialized
    # and any time a tracer is added after initialization
    persisted_query_store.tracers = tracers if persisted_queries_tracing_enabled?
  end
end

#verify_http_method=(verify) ⇒ Object



79
80
81
82
83
84
# File 'lib/graphql/persisted_queries/schema_patch.rb', line 79

def verify_http_method=(verify)
  return unless verify

  require "graphql/persisted_queries/analyzers/http_method_ast_analyzer"
  query_analyzer(Analyzers::HttpMethodAstAnalyzer)
end