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.



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

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



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

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

#configure_persisted_query_store(store, **options) ⇒ Object



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

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



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

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

#hash_generator_procObject



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

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

#persisted_queries_tracing_enabled?Boolean

Returns:

  • (Boolean)


84
85
86
87
# File 'lib/graphql/persisted_queries/schema_patch.rb', line 84

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

#persisted_query_error_handlerObject



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

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

#persisted_query_storeObject



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

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

#tracer(name) ⇒ Object



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

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



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

def verify_http_method=(verify)
  query_analyzer(prepare_analyzer) if verify
end