Size: a a a

GraphQL — русскоговорящее сообщество

2019 April 16

U

Uxname in GraphQL — русскоговорящее сообщество
а ты сейчас пытаешься решить задачу? если да - го созвон. я тоже тут сижу кодю
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Алексей Родионов
Всем привет!

Реализовал директиву hasRole, которую можно применять к FIELD_DEFINITION и OBJECT по инструкции из https://www.apollographql.com/docs/graphql-tools/schema-directives#enforcing-access-permissions.

Хочу, чтобы её можно было навешивать на аргументы и инпуты мутаций, то есть на ARGUMENT_DEFINITION и INPUT_FIELD_DEFINITION.

Логика такая: например, в мутации updatePost ограничить изменение title таким образом, чтобы только администраторы могли менять это поле, путём навешивания директивы на аргумент title. При этом на аргумент content ничего не навешивать, разрешив тем самым всем редактировать поле content. Или навесить директиву с другой ролью (отличной от администратора).

Возможно ли это вообще?

Очевидно, что нужно использовать visitArgumentDefinition и visitInputFieldDefinition.

Но проблема в том, что у argument'ов и input field'ов в field нет resolve.
Вешай свои директивы на ARGUMENT_DEFINITION и INPUT_FIELD_DEFINITION.

Но вот считывай их через visitFieldDefinition:
- получил филд конфиг и провалился в его аргументы и типы аргументов
- если где-то в глубине нашел свою директиву, то на текущем филд конфиге правишь резолвер.

По другому у тебя никак не получится.
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Представь ситуацию, что у тебя один ИнпутТип используется в 30 резолверах. Соответственно во всех 30 местах тебе надо навешать проверку  на “правильность” значения аргумента.

Т.е. надо бегать по всем филд-конфигам, а уже из них бегать по аргументам и править текущих филд конфиг. Чтоб во всех 30 резолверах навешать свою логику.

Через аргумент или инпут у тебя не получиться выйти на все 30 резолверов, где он используется.
источник

АР

Алексей Родионов in GraphQL — русскоговорящее сообщество
Pavel @nodkz
Представь ситуацию, что у тебя один ИнпутТип используется в 30 резолверах. Соответственно во всех 30 местах тебе надо навешать проверку  на “правильность” значения аргумента.

Т.е. надо бегать по всем филд-конфигам, а уже из них бегать по аргументам и править текущих филд конфиг. Чтоб во всех 30 резолверах навешать свою логику.

Через аргумент или инпут у тебя не получиться выйти на все 30 резолверов, где он используется.
> у тебя один ИнпутТип используется в 30 резолверах

У меня у каждой мутации свой уникальный инпут тип. Но такая ситуация возможна.
источник

g

graphql_bot in GraphQL — русскоговорящее сообщество
graphql-compose/graphql-compose v6.2.0 → v6.3.0 🎉
источник
2019 April 17

АР

Алексей Родионов in GraphQL — русскоговорящее сообщество
источник

NT

Nikita Tkachuk in GraphQL — русскоговорящее сообщество
Интересная статья, получается с    typegraphql не будет автокомплита пока пишешь схему?
источник

АР

Алексей Родионов in GraphQL — русскоговорящее сообщество
Nikita Tkachuk
Интересная статья, получается с    typegraphql не будет автокомплита пока пишешь схему?
источник

АР

Алексей Родионов in GraphQL — русскоговорящее сообщество
Но синтаксис TypeGraphQL мне всё равно нравится больше, чем синтаксис GraphQL Nexus. Более чистый, более читаемый, более понятный.
источник

АР

Алексей Родионов in GraphQL — русскоговорящее сообщество
источник

EK

Eugene Korobkov in GraphQL — русскоговорящее сообщество
Nikita Tkachuk
Интересная статья, получается с    typegraphql не будет автокомплита пока пишешь схему?
А зачем писать схему, если схема генерируется автоматически?
источник

NT

Nikita Tkachuk in GraphQL — русскоговорящее сообщество
Имел ввиду ресолверы >.<
источник

EK

Eugene Korobkov in GraphQL — русскоговорящее сообщество
Автокомплиты будут
источник

EK

Eugene Korobkov in GraphQL — русскоговорящее сообщество
Т.к. ты с  TS типами работаешь в typeGraphql
источник

NT

Nikita Tkachuk in GraphQL — русскоговорящее сообщество
Алексей Родионов
Всем привет!

Реализовал директиву hasRole, которую можно применять к FIELD_DEFINITION и OBJECT по инструкции из https://www.apollographql.com/docs/graphql-tools/schema-directives#enforcing-access-permissions.

Хочу, чтобы её можно было навешивать на аргументы и инпуты мутаций, то есть на ARGUMENT_DEFINITION и INPUT_FIELD_DEFINITION.

Логика такая: например, в мутации updatePost ограничить изменение title таким образом, чтобы только администраторы могли менять это поле, путём навешивания директивы на аргумент title. При этом на аргумент content ничего не навешивать, разрешив тем самым всем редактировать поле content. Или навесить директиву с другой ролью (отличной от администратора).

Возможно ли это вообще?

Очевидно, что нужно использовать visitArgumentDefinition и visitInputFieldDefinition.

Но проблема в том, что у argument'ов и input field'ов в field нет resolve.
источник

АР

Алексей Родионов in GraphQL — русскоговорящее сообщество
Мне это не годится, потому что у меня в текущем проекте SDL-first подход с Prisma + Apollo Server 2.

Для следующих проектов присматриваюсь к TypeGraphQL и GraphQL Nexus. Но не могу пока окончательно определиться.
источник

NT

Nikita Tkachuk in GraphQL — русскоговорящее сообщество
Алексей Родионов
Мне это не годится, потому что у меня в текущем проекте SDL-first подход с Prisma + Apollo Server 2.

Для следующих проектов присматриваюсь к TypeGraphQL и GraphQL Nexus. Но не могу пока окончательно определиться.
когда определитесь - поделитесь пожалуйста своим выбором ) я тоже всё еще сижу с SDL, никак не могу определиться что выбрать ) пока больше склоняюсь в сторону Nexus
источник

NT

Nikita Tkachuk in GraphQL — русскоговорящее сообщество
еще подумывал о том, что удобно смотреть "апи" сервера в sdl, но с Nexus и typeGraphql наверно тоже можно где то посмотреть sdl который они генерируют ?
источник

AB

Aleksandr Bukhalo in GraphQL — русскоговорящее сообщество
Nikita Tkachuk
еще подумывал о том, что удобно смотреть "апи" сервера в sdl, но с Nexus и typeGraphql наверно тоже можно где то посмотреть sdl который они генерируют ?
nexus сам генерирует sdl
источник

AB

Aleksandr Bukhalo in GraphQL — русскоговорящее сообщество
output: types в makeSchema
источник