Size: a a a

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

2019 April 09

U

Uxname in GraphQL — русскоговорящее сообщество
Vladyslav Siroshtan
@uxname  По типу как для клиента генерить ? codegen ? Так тогда мне перегенерировать придется каждый раз после добавления изменений, не удобно на стадии старта, по другому никак ?
юзайте js, сдался вам этот ts :D
Шучу, мысли вслух.
А вообще - можно в npm prestart закинуть стягивание и перегенерацию типов, тогда при запуске всё будет пересобираться, дольше - да, но зато при изменении бэка - клиент будет подтягивать новую схему
источник

VS

Vladyslav Siroshtan in GraphQL — русскоговорящее сообщество
@uxname
Не, не хочу после ts возвращаться 🙂
Как раз задумался об этом только что.
Только мне не для клиента.
Юзаю graphql-modules, описываю в sdl, а в резолверах хочу interfaces подставлять и не дублировать структуру из sdl в интерфейсы.
источник

VS

Vladyslav Siroshtan in GraphQL — русскоговорящее сообщество
@uxname но спасибо за предложение, сейчас по вашему предложению сделаю.
источник

NT

Nikita Tkachuk in GraphQL — русскоговорящее сообщество
а можно как то сделать чтобы работал автокомплит с результатом аполловской квери?
с тулзами аполло у нас есть автокомплит при написании квери, а вот для результата нет :С
или есть?
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Vladyslav Siroshtan
@uxname  По типу как для клиента генерить ? codegen ? Так тогда мне перегенерировать придется каждый раз после добавления изменений, не удобно на стадии старта, по другому никак ?
type-graphql из ts генерит graphql типы.

Он под капотом использует декораторы тайпскрипта и рефлексию. В тайпскрипте беда с экспортом метаданных, они экспортить умеют только примитивные типы (http://blog.wolksoftware.com/decorators-metadata-reflection-in-typescript-from-novice-to-expert-part-4#b-obtaining-parameter-type-metadata-using-the_2)

Поэтому type-graphql костылиться на классах (не интерфейсах). Это единственно что экспортируется тайпскриптов в метаданные рефлексии.

То что экспортит тайпскрипт, было реализовано 2 года назад. Сегодня как раз их подспросил как дела с экспортом более богатой метадаты
https://github.com/Microsoft/TypeScript/issues/12626#issuecomment-481167427

——

На данный момент только один вариант может быть, это написание собственного трансформ-плагина к тайпскрипту c использованием Compiler Api. Который будет брать Символы из Нод (https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API) И как-то их удобно записывать для своего рантайма. И уже в рантайме строить типы и схему, например через graphql-compose.

Собственно почему так весело и подробно пишу. Т.к. чем-то похожим сейчас страдаю.
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Nikita Tkachuk
а можно как то сделать чтобы работал автокомплит с результатом аполловской квери?
с тулзами аполло у нас есть автокомплит при написании квери, а вот для результата нет :С
или есть?
Можно. Они сайт обновили и теперь фиг найдешь то, что тебе надо прочитать. Поэтому смотри на вот этот код https://github.com/nodkz/graphql-workshop-by/blob/step-4/src/pages/orders/OrderListQuery.tsx#L16-L44

import { Query } from 'react-apollo';
import { OrderListQuery as Q, OrderListQueryVariables as V } from './__generated__/OrderListQuery'; // генериться аполло кли

class QueryTyped extends Query<Q, V> {}


Ответ (data) и переменные становятся типизированными.
источник

NT

Nikita Tkachuk in GraphQL — русскоговорящее сообщество
Pavel @nodkz
Можно. Они сайт обновили и теперь фиг найдешь то, что тебе надо прочитать. Поэтому смотри на вот этот код https://github.com/nodkz/graphql-workshop-by/blob/step-4/src/pages/orders/OrderListQuery.tsx#L16-L44

import { Query } from 'react-apollo';
import { OrderListQuery as Q, OrderListQueryVariables as V } from './__generated__/OrderListQuery'; // генериться аполло кли

class QueryTyped extends Query<Q, V> {}


Ответ (data) и переменные становятся типизированными.
Ееее, офигенно ) а может можно еще без всяких лишних экспортов? на уровне плагина для VScode ?)
надо будет изучить тему, и то, как это с хуками и хоками работает еще )
источник

P@

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

VS

Vladyslav Siroshtan in GraphQL — русскоговорящее сообщество
@nodkz Спасибо за крутое! разьяснение.
Но я уже не мало написал на graphql-modules и переписывать под type-graphql нету времени.
"Compiler Api" интересно, но нету времени с этим копаться сейчас.
источник

AL

Andrii Los in GraphQL — русскоговорящее сообщество
Для кодогенерации я бы все же советовал graphql-code-generator
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Andrii Los
Для кодогенерации я бы все же советовал graphql-code-generator
С фрагментами он фигово работает. Точнее не работает.
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Когда их по суровому юзаешь. Я пробовал не пооучилось. Спустя пару месяцев поддаван пробавал, тот же результат. Вобщем остались на аполло кли.
источник

AL

Andrii Los in GraphQL — русскоговорящее сообщество
Pavel @nodkz
Когда их по суровому юзаешь. Я пробовал не пооучилось. Спустя пару месяцев поддаван пробавал, тот же результат. Вобщем остались на аполло кли.
Ну там версия 1 вышла. И она многое че поменяла.
источник

AL

Andrii Los in GraphQL — русскоговорящее сообщество
Так или иначе, напиши им фидбек, скажи че не так.
источник

P@

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

AL

Andrii Los in GraphQL — русскоговорящее сообщество
Просто забивать и не юзать, это такое :) Ибо тулза универсльная для всех и команда прям оч упарывается в него и постоянно развивает.
источник

AL

Andrii Los in GraphQL — русскоговорящее сообщество
И они прям оч круто реагируют на фибек.
источник

AL

Andrii Los in GraphQL — русскоговорящее сообщество
Так что я бы советовал негодования свои вылить в ищьюз
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Andrii Los
Так или иначе, напиши им фидбек, скажи че не так.
Да они и так все норм прут из релея. Что им говорить. Нужно чутка подождать.
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Andrii Los
И они прям оч круто реагируют на фибек.
Ок пну их, как я люблю. Щас тоже ими пользуемся.
источник