Я делаю запрос в graphql, не выполняя запрос n + 1 в каркасных рельсах
Это для совместного использования базы данных, чтобы реагирующий веб-упаковщик получил доступ к информации.
У меня естьисключено n + 1 запросов в отношениях один к одному и один ко многим с гемом пакетного загрузчика
один ко многим
BatchLoader.for(user.id).batch(default_value: []) do |user_ids, loader|
Comment.where(user_id: user_ids).each do |comment|
loader.call(comment.user_id) { |memo| memo << comment }
end
end
один к одному
BatchLoader.for(post.user_id).batch do |user_ids, loader|
User.where(id: user_ids).each { |user| loader.call(user.id, user) }
end
Поскольку отношение «многие ко многим» не распространяется на вышеприведенные случаи, я пробовал gem Shopify / graphql-batch, и его работа или результат не очень хорошо работали с «один ко многим»отношения
class Physician < ApplicationRecord
has_many :appointments
has_many :patients, through: :appointments
end
class Appointment < ApplicationRecord
belongs_to :physician
belongs_to :patient
end
class Patient < ApplicationRecord
has_many :appointments
has_many :physicians, through: :appointments
end
В этом примере схемы я хочу получить врачей от пациента