Size: a a a

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

2020 September 21

DB

Dmitry Balitsky in GraphQL — русскоговорящее сообщество
Надо верить
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Aleksandr Bukhalo
Пока ты далеко не убежал, есть в graphql-compose что-то, чтобы собирает типы из классов, на манер type-graphql?
Сам graphql-compose этого не умеет. Он тупо умеет хранить типы и редактировать их как угодно. Это либа только для того, чтобы создавать схемы не через конфиг, а декларативными вызовами. И в несколько проходов, если требуется. Грубо говоря расширение graphql-js по спеке.

А вот уже всякие плагины к нему, которые написаны поверх graphql-compose начинают работать с “внешним миром”. Например

graphql-compose-mongoose берет монгусовские схемы и из них генерирует тонну типов и всяких резолверов.

graphql-compose-json – берет json объект любой вложенности и из него генерирует типы

graphql-compose-elasticserach – берет маппинг эластика и для него генерирует типы и резолверы

Для type-orm мы начинали писать, но чет забросили. Может в ближайшее время реанимируем разработку.

Для декораторов как в type-graphql была мысль написать, даже прототип какой-то делал. Но потом плюнул т.к. не увидел практического применения у нас в конторе.

А так можно написать, если начнешь такой плагин писать для опенсорса и мейнтейнить его - то я помогу. Там по идее до рабочего прототипа тихим сапом можно недели за две все написатьь. А если сидеть усердно, то дня за 3-4.
источник

AB

Aleksandr Bukhalo in GraphQL — русскоговорящее сообщество
Pavel @nodkz
Сам graphql-compose этого не умеет. Он тупо умеет хранить типы и редактировать их как угодно. Это либа только для того, чтобы создавать схемы не через конфиг, а декларативными вызовами. И в несколько проходов, если требуется. Грубо говоря расширение graphql-js по спеке.

А вот уже всякие плагины к нему, которые написаны поверх graphql-compose начинают работать с “внешним миром”. Например

graphql-compose-mongoose берет монгусовские схемы и из них генерирует тонну типов и всяких резолверов.

graphql-compose-json – берет json объект любой вложенности и из него генерирует типы

graphql-compose-elasticserach – берет маппинг эластика и для него генерирует типы и резолверы

Для type-orm мы начинали писать, но чет забросили. Может в ближайшее время реанимируем разработку.

Для декораторов как в type-graphql была мысль написать, даже прототип какой-то делал. Но потом плюнул т.к. не увидел практического применения у нас в конторе.

А так можно написать, если начнешь такой плагин писать для опенсорса и мейнтейнить его - то я помогу. Там по идее до рабочего прототипа тихим сапом можно недели за две все написатьь. А если сидеть усердно, то дня за 3-4.
Я уже говорил раньше про это в чатике и тебя тоже пинговал. В общем история такая. Я прям проникся идеями NestJS где всё обмазано декораторами, везде DI, функционал в отдельных модулях и всё такое. Но у там есть проблема с GraphQL. Стандартный модуль изначально был основан на type-graphql и тащил за ним его проблемы, новая версия уже без type-graphql но с обратной совместимостью к нему и тащущая опять те же проблемы.

Схема прибита гвоздями, резолверы что в nestjs что в type-graphql восприняли буквально как REST контроллеры и сделали всё, чтобы нельзя было развернуться. Например сделать вложенный Query очень дрочёно, потому что это уже не плоская структура, а там этим всё пропитано. В мутации нельзя вернуть Query, вложенные мутации тоже нельзя.

НО! Там всё остальное очень удачно ложится на этот манер, entity из TypeORM на классах, DTO / Input на классах, которые удобно валидировать с помощью class-validator и другие плюшки.

В общем хотелось бы гибкости graphql-compose но на манер Nest’а. Я уже несколько раз пробовал сделать обёртку под Nest, но бросал, потому что задача (конечно только для меня) весьма сложная получается.
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Алексей Родионов
И я не уверен, что проекция полей у @nodkz за 50 строк учитывает все corner cases, которые описаны в ReadMe https://www.npmjs.com/package/graphql-parse-resolve-info. :)
Да они взяли и раpвернули AST в человекочитаемый-ast. Дальше все равно писать свои методы, которые срежут весь шум, чтоб результат их работы можно было легко засунуть в проекцию полей монги и постгри.

И да 50 строк все кейсы покрывают ) Я его писал года 4 назад, мне еще Миша Новиков подсказывал.
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Aleksandr Bukhalo
Я уже говорил раньше про это в чатике и тебя тоже пинговал. В общем история такая. Я прям проникся идеями NestJS где всё обмазано декораторами, везде DI, функционал в отдельных модулях и всё такое. Но у там есть проблема с GraphQL. Стандартный модуль изначально был основан на type-graphql и тащил за ним его проблемы, новая версия уже без type-graphql но с обратной совместимостью к нему и тащущая опять те же проблемы.

Схема прибита гвоздями, резолверы что в nestjs что в type-graphql восприняли буквально как REST контроллеры и сделали всё, чтобы нельзя было развернуться. Например сделать вложенный Query очень дрочёно, потому что это уже не плоская структура, а там этим всё пропитано. В мутации нельзя вернуть Query, вложенные мутации тоже нельзя.

НО! Там всё остальное очень удачно ложится на этот манер, entity из TypeORM на классах, DTO / Input на классах, которые удобно валидировать с помощью class-validator и другие плюшки.

В общем хотелось бы гибкости graphql-compose но на манер Nest’а. Я уже несколько раз пробовал сделать обёртку под Nest, но бросал, потому что задача (конечно только для меня) весьма сложная получается.
Не только ты один с нестом мучаешься. Вот буквально вчера общались с Димой.
источник

P@

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

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
В общем не у тебя одного проблема в нест затащить нормальный графкуэль. Так что можешь начать думать про graphql-compose-nestjs 😈
источник
2020 September 22

AB

Aleksandr Bukhalo in GraphQL — русскоговорящее сообщество
Pavel @nodkz
В общем не у тебя одного проблема в нест затащить нормальный графкуэль. Так что можешь начать думать про graphql-compose-nestjs 😈
источник

AB

Aleksandr Bukhalo in GraphQL — русскоговорящее сообщество
Но я правда там почти ничего не сделал)
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Можно будет завтра созвониться, помогу понять основные моменты. Заодно разберем type-graphql как он там реестр сделал. У graphql-compose уже есть встроенный реестр.
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Т.е. type-graphql можно свой написать с еще большими плюшками с кодовой базой раза в 3 меньше, чем и Михаля.
источник

AB

Aleksandr Bukhalo in GraphQL — русскоговорящее сообщество
Pavel @nodkz
Можно будет завтра созвониться, помогу понять основные моменты. Заодно разберем type-graphql как он там реестр сделал. У graphql-compose уже есть встроенный реестр.
Можно в принципе, но я возможно не буду понимать половину того что ты говоришь, я с graphql в большей части пользователь готовых либ, ну и проблемы с пониманием как там эта вся рефлексия под капотом работает
источник

AB

Aleksandr Bukhalo in GraphQL — русскоговорящее сообщество
Было круто пробрейнштормить как это всё можно на классах реализовать, чтобы не получился ещё один type-graphql и гибкость graphql-compose осталась
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Прочитай 4ре части по ссылке http://blog.wolksoftware.com/decorators-reflection-javascript-typescript

И будешь понимать практически все, как работает рефлексия в тайпскрипте.
источник

AB

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

АР

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

АР

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

АР

Алексей Родионов... in GraphQL — русскоговорящее сообщество
GraphQL и JSON парсеры, написанные целиком на TS типах. )
источник

AM

Alexey Mikhaylov in GraphQL — русскоговорящее сообщество
привет, кто-то может пояснить зачем нужно вызывать writeFragment, вроде работает и тупо если вернуть обновленный массив (дока https://www.apollographql.com/docs/react/data/mutations/)
источник

АР

Алексей Родионов... in GraphQL — русскоговорящее сообщество
Alexey Mikhaylov
привет, кто-то может пояснить зачем нужно вызывать writeFragment, вроде работает и тупо если вернуть обновленный массив (дока https://www.apollographql.com/docs/react/data/mutations/)
Можно предположить, потому что фрагменты являются переиспользуемыми (могут быть одновременно в нескольких запросах) и чтобы кеш понимал, что случалось с фрагментом и следовательно со всеми запросами, которые его используют.
источник