2017-08-16 13:04:41 +00:00
|
|
|
module GraphqlHelpers
|
|
|
|
# Run a loader's named resolver
|
|
|
|
def resolve(kls, name, obj: nil, args: {}, ctx: {})
|
|
|
|
kls[name].call(obj, args, ctx)
|
|
|
|
end
|
|
|
|
|
2018-02-23 15:36:40 +00:00
|
|
|
# Runs a block inside a BatchLoader::Executor wrapper
|
2017-08-16 13:04:41 +00:00
|
|
|
def batch(max_queries: nil, &blk)
|
|
|
|
wrapper = proc do
|
2018-02-23 15:36:40 +00:00
|
|
|
begin
|
|
|
|
BatchLoader::Executor.ensure_current
|
|
|
|
blk.call
|
|
|
|
ensure
|
|
|
|
BatchLoader::Executor.clear_current
|
2017-08-16 13:04:41 +00:00
|
|
|
end
|
|
|
|
end
|
2018-02-23 15:36:40 +00:00
|
|
|
|
2017-08-16 13:04:41 +00:00
|
|
|
if max_queries
|
|
|
|
result = nil
|
|
|
|
expect { result = wrapper.call }.not_to exceed_query_limit(max_queries)
|
|
|
|
result
|
|
|
|
else
|
|
|
|
wrapper.call
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|