Skip to content

Instantly share code, notes, and snippets.

@cardmagic
Created December 8, 2018 15:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cardmagic/29205194945dc4eca5b437b3b5d09ea9 to your computer and use it in GitHub Desktop.
Save cardmagic/29205194945dc4eca5b437b3b5d09ea9 to your computer and use it in GitHub Desktop.
class AssociationLoader < GraphQL::Batch::Loader
def initialize(association_name)
@association_name = association_name
end
private
def perform(records)
::ActiveRecord::Associations::Preloader.new.preload(records, @association_name)
records.each { |record| fulfill(record, record.public_send(@association_name)) }
end
end
class RecordLoader < GraphQL::Batch::Loader
def initialize(model)
@model = model
end
def perform(ids)
@model.where(id: ids).each { |record| fulfill(record.id, record) }
ids.each { |id| fulfill(id, nil) unless fulfilled?(id) }
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment