Size: a a a

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

2018 November 22

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Посмотри сколько дебильных проверок надо сделать, чтоб понять есть ли директива на поле или нет.

Graphql-tools только скрывает этот геморрой.
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
В рантайме вместо директив используй - аргументы.
источник

VR

Vladimir Razuvaev in GraphQL — русскоговорящее сообщество
Сергей Максутов
Всех приветствую! Вопрос от новичка в GQL, тобишь меня: хочу поиграться с GQL на разных платформах/языках, в первую очередь хотел бы задействовать C++. Нашёл репозиторий: https://github.com/graphql/libgraphqlparser
Задача стоит простая — создать схему, объявить резолверы, отдающие какие-то данные и подключиться любым GQL-клиентом к моему приложению на С++, просто погонять эти самые данные.
Хотел бы уточнить, нужный ли проект я нашёл? Или же есть что-то более подходящее?
Спасибо
Нет, это только парсер
источник

VR

Vladimir Razuvaev in GraphQL — русскоговорящее сообщество
Он вам строки с graphql запросами и описаниями конвертирует в ast-структуры, но и только. Валидации и выполнения запросов с резолверами там нет
источник

VR

Vladimir Razuvaev in GraphQL — русскоговорящее сообщество
Для c++ не было полноценной реализации (по крайней мере последний раз когда я смотрел)
источник

a

akaSybe in GraphQL — русскоговорящее сообщество
Pavel @nodkz
Не используй директивы в рантайме! Это тормознутое зло.
Есть тесты, которые показывают падение производииельности?
источник

СМ

Сергей Максутов in GraphQL — русскоговорящее сообщество
Vladimir Razuvaev
Нет, это только парсер
Я догадывался, спасибо за уточнение
источник

a

akaSybe in GraphQL — русскоговорящее сообщество
Просто я представляю себе что при парсинге запроса директивы попадают в массив резолверов и выполняются по порядку перед вызовом самого резолвера
источник

a

akaSybe in GraphQL — русскоговорящее сообщество
И никаких особых проверок сложных не нужно
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Директивы не выполняются. В них нет кода )))
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Это просто маркер.
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Код ты долен засунуть в резолв метод. (Это делает graphql-tools под капотом).
источник

a

akaSybe in GraphQL — русскоговорящее сообщество
Да есть же
источник

a

akaSybe in GraphQL — русскоговорящее сообщество
Вот здесь тогда что?
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
под капотом о директиве ты узнаешь только из info
js
resolve: (source, args, context, info) => {
       if (info.fieldNodes?.[0].directives?.[0]?.name?.value === 'uppercase') {
         return source.name.toUpperCase();
       }
       return source.name;
     },
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Вобщем перед тем как нахреначить директив для своей схемы. Напиши тесты и посмотри как они работаеют.

А потом тупо сделай тоже самое через аргументы.
источник

a

akaSybe in GraphQL — русскоговорящее сообщество
Хорошо, посмотрю
источник

a

akaSybe in GraphQL — русскоговорящее сообщество
Директива всегда выглядела для меня как декоратор/high order function, которая выполняется перед другими директивами/резолвером
источник

NT

Nikita Tkachuk in GraphQL — русскоговорящее сообщество
а кто то на фронтенде пробовал дружить редакс или церебрал с аполло ? или может уже есть кейсы удобного использования apollo-link-state?
источник

NT

Nikita Tkachuk in GraphQL — русскоговорящее сообщество
apollo-link-state вроде может стать вполне удобным:
https://www.apollographql.com/docs/link/links/state.html#helper-components
withClientMutations(({ writeField }) => (
 <button onClick={() => writeField({ status: 'yo' })} />
));
источник