Представьте себе условие, что у меня есть запрос под названием «пользователи», который возвращает всех пользователей, и эти пользователи могут быть связаны с одной или несколькими компаниями, поэтому у меня есть тип UserCompanies (он мне нужен, потому что он сохраняет некоторую дополнительную информацию помимо связь). Я использую Prisma, и мне нужно установить фильтр, который возвращает только пользователей, принадлежащих к той же компании, что и запросчик. Я получаю информацию о компании от JWT, и мне нужно вставить ее в запрос перед отправкой в Prisma.
Итак, запрос должен быть таким:
query allUsers {
users {
name
id
status
email
userCompanies{
id
role
}
}
}
и на стороне сервера Я должен преобразовать его в: (пользователь, где все в порядке, просто меняя аргументы)
query allUsers {
users(where: {
userCompanies_some: {
companyId: "companyId-from-jwt"
}
}) {
name
id
status
email
userCompanies(where: {
companyId: "companyId-from-jwt"
}){
id
role
}
}
}
Я вижу несколько разрешений на это, но я не знаю, является ли это лучшим способом: 1 - Используя addFragmentToInfo, выполняет задание условий для запроса, но если в запросе уже заданы пользовательские компании, возникает конфликт. В остальном работает нормально. 2 - Я могу использовать псевдоним для запроса, но после результата БД мне нужно будет отредактировать все результаты в массиве, чтобы перезаписать результат. 3 - не использовать информацию о Prisma и фильтровать в js. 4 - Изменить информацию (4-й параметр) типа GraphqlResolveInfo