Size: a a a

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

2021 February 07

АК

Алексей Козин... in GraphQL — русскоговорящее сообщество
Иван
С монорепой-то понятно)
Вот! Теперь тебе нужно объединить все репы в одну )
источник

И

Иван in GraphQL — русскоговорящее сообщество
Алексей Козин
Вот! Теперь тебе нужно объединить все репы в одну )
Сначала мне нужно придумать, как объяснить, почему пяток сервисов на го, пара монолитов на пхп и три приложения на жс должны лежать в одной репе. И чтобы в дурку не отправили
источник

AT

Andy Theos in GraphQL — русскоговорящее сообщество
Иван
Йоу

Поделитесь опытом, как кошерно шарить gql-схему между репозиторием, где эта схема описана, и репозиториями-клиентами. Моя хотелка — генерить typescript-декларации из схемы.


Вижу два варианта

— настроить сетап, который смотрит на сервер со схемой и по событию генерит декларации. Предвижу проблемы с доступностью и актуальностью этого сервера (надо накатить туда «тот самый» коммит, надо авторизовываться, иногда впн-туннель поднимать)

— настроить ci вокруг репозитория со схемой, чтобы схема деплоилась в стандартный реджистри в виде артефакта с версионированием, нотификациями об изменениях и прочими свистелками. Предвижу проблемы с гемором настройки


Как у вас? Какие есть подводные камни?
Если нужно автогенерить по изменению схемы, то проще из ci бэка кинуть коммит с измененной схемой в нужный репо, там обработать. А это на самом деле второй вариант с ci на минималках. Мы юзаем первый вариант, т.к. скорее всего схема будет всегда доступна
источник

AT

Andy Theos in GraphQL — русскоговорящее сообщество
Если не монорепо, то еще вариация это отдельный пакет с декларациями, которые генерятся на триггер (или коммит). Клиенты там уже потребляют как хотят, блокируя или не блокируя свои сборки при несовместимых изменениях в схеме. В целом я не понял до конца где важно тебе автоматизировать, в генерации или совсем весь билд процесс, с проверками в потребителях схемы
источник

И

Иван in GraphQL — русскоговорящее сообщество
Andy Theos
Если не монорепо, то еще вариация это отдельный пакет с декларациями, которые генерятся на триггер (или коммит). Клиенты там уже потребляют как хотят, блокируя или не блокируя свои сборки при несовместимых изменениях в схеме. В целом я не понял до конца где важно тебе автоматизировать, в генерации или совсем весь билд процесс, с проверками в потребителях схемы
Описанное тут попадает под второй вариант
источник

AT

Andy Theos in GraphQL — русскоговорящее сообщество
Проще конечно первый вариант, плюс доступность и актуальность сервера и в том и в другом случае придется решать (а чего это вообще он недоступен?), я бы сделал сначала первый вариант на ручной генерации, автоматизировав позже по необходимости.
источник

И

Иван in GraphQL — русскоговорящее сообщество
Andy Theos
Проще конечно первый вариант, плюс доступность и актуальность сервера и в том и в другом случае придется решать (а чего это вообще он недоступен?), я бы сделал сначала первый вариант на ручной генерации, автоматизировав позже по необходимости.
— С чего он недоступен?
Это стейдж, на который может быть накачена не та версия приложения. И этот стейдж может быть за файерволом
источник
2021 February 08

A

Anatoliy in GraphQL — русскоговорящее сообщество
Приветствую.
Подскажите пожалуйста, как я могу парсить qraphql схему, что бы динамически получать из нее данные и использовать на фронте?
К примеру я хочу получить массив возможных опций для селекта. Опции это все доступные типы для какой-то сущности.
Это нужно для того, чтобы при добавлении новых опций в схеме, они сразу появлялись на фронте.
Заранее спасибо.
источник

И

Иван in GraphQL — русскоговорящее сообщество
Anatoliy
Приветствую.
Подскажите пожалуйста, как я могу парсить qraphql схему, что бы динамически получать из нее данные и использовать на фронте?
К примеру я хочу получить массив возможных опций для селекта. Опции это все доступные типы для какой-то сущности.
Это нужно для того, чтобы при добавлении новых опций в схеме, они сразу появлялись на фронте.
Заранее спасибо.
Ссылки бот вырезает
источник

И

Иван in GraphQL — русскоговорящее сообщество
Скриншоты тоже
источник

A

Anatoliy in GraphQL — русскоговорящее сообщество
Списались в личке, спасибо.
источник

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
Так они и будут появляться. Вы же соединяетесь по ссылке с сервером, схема отдаётся. Apollo расширения для ide имеются, что подсказывают типы по схеме.
источник

A

Anatoliy in GraphQL — русскоговорящее сообщество
Мне нужно не для линтера, а для динамического кода. Что бы не хардкодить массив опций, а брать из схемы, произвольной длинны
источник

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
Anatoliy
Мне нужно не для линтера, а для динамического кода. Что бы не хардкодить массив опций, а брать из схемы, произвольной длинны
Звучит как костыль. Если это конечно не enum какой нибудь. Ну тогда при получении схемы, нужно делать кастомную сериализацию. Все перечисляемые типы (если у вас enum скаляр, например), находятся на уровень выше и данные из них распарсить легко
источник

FZ

Fedor Zolotuкhin in GraphQL — русскоговорящее сообщество
Добрый день! У меня есть React-компонент — таблица с постраничным отображением, которая подтягивает данные с сервера по мере необходимости. Текущая страница и количество столбцов хранятся в состоянии компонента. Запрос на получение данных такой (Apollo Client):
const { loading, error, data } = useQuery(query, { variables: { limit: rowsPerPage, offset: page * rowsPerPage } })
Вопрос в следующем: зачем в этом случае может быть нужна функция fetchMore, которую рекомендует документация? Ведь при изменении страницы компонент перерендерится и запрос выполнится с новыми параметрами
источник

MR

Mike Rize in GraphQL — русскоговорящее сообщество
наример для индикаторов загрузки
источник

MR

Mike Rize in GraphQL — русскоговорящее сообщество
если параметр фолс - не показывай индикатор, если тру - показывай
источник

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
Ну если бы у вас offset был не динамическим и переключение страницы ререндерило только стейт и компонент таблицы, а сами данные были бы в другом месте, то удобно динамически наполнять кеш. Ну и как выше для индикатора удобно тоже
источник

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
Ну и например fetchmore выручает когда бесшовная лента. По событию прокрутки. Вариаций много на самом деле.
источник

FZ

Fedor Zolotuкhin in GraphQL — русскоговорящее сообщество
Ок, спасибо
источник