Slide 45
Slide 45 text
https://github.com/exaspark/batch-loader
Batch-Loader
QueryType = GraphQL::ObjectType.define do
name "Query"
field :posts, !types[PostType] do
resolve: ->(obj, args, ctx) { Post.all }
end
end
PostType = GraphQL::ObjectType.define do
name "Post"
field :user, !UserType do
resolve: ->(post, args, ctx) do
BatchLoader.for(post.user_id).batch do |ids, loader|
User.where(id: ids).each { |u| loader.call(u.id, u) }
end
end
end
end
UserType = GraphQL::ObjectType.define do
name "User"
field :name, !types.String
end
BatchLoader.for(post.user_id).batch do |ids, loader|
User.where(id: ids).each { |u| loader.call(u.id, u) }
end