Sha256: 04458bc466854aa9e7049b4c572b419b2d37bf3d4f4d940470e689120aedeaf1
Contents?: true
Size: 1.06 KB
Versions: 5
Compression:
Stored size: 1.06 KB
Contents
module GraphQL::Batch class Setup class << self def start_batching(executor_class) GraphQL::Batch::Executor.start_batch(executor_class) end def end_batching GraphQL::Batch::Executor.end_batch end def instrument_field(schema, type, field) return field unless type == schema.mutation old_resolve_proc = field.resolve_proc field.redefine do resolve ->(obj, args, ctx) { GraphQL::Batch::Executor.current.clear begin ::Promise.sync(old_resolve_proc.call(obj, args, ctx)) ensure GraphQL::Batch::Executor.current.clear end } end end end def initialize(schema, executor_class:) @schema = schema @executor_class = executor_class end def before_query(query) Setup.start_batching(@executor_class) end def after_query(query) Setup.end_batching end def instrument(type, field) Setup.instrument_field(@schema, type, field) end end end
Version data entries
5 entries across 5 versions & 2 rubygems