lib/graphql/batch/setup.rb in graphql-batch-0.3.4 vs lib/graphql/batch/setup.rb in graphql-batch-0.3.5
- old
+ new
@@ -1,14 +1,54 @@
module GraphQL::Batch
- module Setup
- extend self
+ class Setup
+ class << self
+ def start_batching
+ raise NestedError if GraphQL::Batch::Executor.current
+ GraphQL::Batch::Executor.current = GraphQL::Batch::Executor.new
+ end
+ def end_batching
+ GraphQL::Batch::Executor.current = nil
+ 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
+
+ def before_query(query)
+ warn "Deprecated graphql-batch setup `instrument(:query, GraphQL::Batch::Setup)`, replace with `use GraphQL::Batch`"
+ start_batching
+ end
+
+ def after_query(query)
+ end_batching
+ end
+ end
+
+ def initialize(schema)
+ @schema = schema
+ end
+
def before_query(query)
- raise NestedError if GraphQL::Batch::Executor.current
- GraphQL::Batch::Executor.current = GraphQL::Batch::Executor.new
+ Setup.start_batching
end
def after_query(query)
- GraphQL::Batch::Executor.current = nil
+ Setup.end_batching
+ end
+
+ def instrument(type, field)
+ Setup.instrument_field(@schema, type, field)
end
end
end