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

Общаемся на темы, посвященные GraphQL и опыту его использования. Проблемы. Новости. Решения. Вам могут быть полезны: @apollo_ru, @react_js, @vuejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание в чате было полезным и комфортным.

352 members

Архив канала @graphql_ru 22 мая 2018 г.

05:56:05 ДП
User 481349
Всем привет. 
Есть кто то кто пользуется https://prisma.io?
prisma.io
Prisma is a performant open-source GraphQL ORM-like layer doing the heavy lifting in your GraphQL server.
06:23:52 ДП
User 481349
User 481349
Всем привет. 
Есть кто то кто пользуется https://prisma.io?
prisma.io
Prisma is a performant open-source GraphQL ORM-like layer doing the heavy lifting in your GraphQL server.
Они пишут что используют https://www.opencrud.org для генерации запросов, мутаций, подписок на основании сущностей. 

При этом можно самому описывать типы запросов, мутаций, подписок. 

Вопрос в том, как они объеденяются вместе, по какой логике, зачем так, почему не сделать либо полную автогенерацию либо ручное описание.
01:33:37 ПП
User 144022504
User 481349
Они пишут что используют https://www.opencrud.org для генерации запросов, мутаций, подписок на основании сущностей. 

При этом можно самому описывать типы запросов, мутаций, подписок. 

Вопрос в том, как они объеденяются вместе, по какой логике, зачем так, почему не сделать либо полную автогенерацию либо ручное описание.
может спросить у них на прямую?
01:52:41 ПП
User 43503298
User 481349
Они пишут что используют https://www.opencrud.org для генерации запросов, мутаций, подписок на основании сущностей. 

При этом можно самому описывать типы запросов, мутаций, подписок. 

Вопрос в том, как они объеденяются вместе, по какой логике, зачем так, почему не сделать либо полную автогенерацию либо ручное описание.
Призма генерирует GraphQL CRUD интерфейс к базе на основе модели данных. Дальше ты пишешь свой GraphQL сервер, со своим domain specific API и используешь graphql-bindings для взаимодействия с призмой.

Они ничего вместе не объединяют, объединяешь ты сам внутри резолв функций вызывая CRUD апи призмы
02:05:17 ПП
User 481349
User 43503298
Призма генерирует GraphQL CRUD интерфейс к базе на основе модели данных. Дальше ты пишешь свой GraphQL сервер, со своим domain specific API и используешь graphql-bindings для взаимодействия с призмой.

Они ничего вместе не объединяют, объединяешь ты сам внутри резолв функций вызывая CRUD апи призмы
Интерфейс, в смысле схема для запросов/подписок/мутаций?
02:06:08 ПП
User 481349
User 144022504
может спросить у них на прямую?
Если здесь есть пользователи, но проще здесь. По моему ты и сам кидал здесь пару ссылок. Используешь?
02:08:53 ПП
User 144022504
User 481349
Если здесь есть пользователи, но проще здесь. По моему ты и сам кидал здесь пару ссылок. Используешь?
использую, но пока не так глубоко зашел) у призмы тех.поддержка очень живо отвечает в слэк, на форуме и гите, поэтому и рекомендую.
03:19:52 ПП
User 296063066
User 481349
Они пишут что используют https://www.opencrud.org для генерации запросов, мутаций, подписок на основании сущностей. 

При этом можно самому описывать типы запросов, мутаций, подписок. 

Вопрос в том, как они объеденяются вместе, по какой логике, зачем так, почему не сделать либо полную автогенерацию либо ручное описание.
Разрабатывая граф сервер с использованием Призмы, вы делаете 2 граф схемы - одна содержит только модели данных на основе которых будет создана база данных, другая схема - это открытый API для клиентов вашего сервера. Основной код который вы пишите при этом - это резолверы для API схемы, если схема примитивная и большей частью соответствует структуре нижележащей базы данных, то резолверы будут в 1 строчку - делегация к сгенерированному Призмой API.
03:22:51 ПП
User 481349
User 296063066
Разрабатывая граф сервер с использованием Призмы, вы делаете 2 граф схемы - одна содержит только модели данных на основе которых будет создана база данных, другая схема - это открытый API для клиентов вашего сервера. Основной код который вы пишите при этом - это резолверы для API схемы, если схема примитивная и большей частью соответствует структуре нижележащей базы данных, то резолверы будут в 1 строчку - делегация к сгенерированному Призмой API.
Спасибо за ответ. К сожалению момент с двумя схемами пока не понят. Резолверы писать зачем, разве фишка призмы не в том чтоб самой это сделать автоматически?
03:26:30 ПП
User 296063066
Ценность вашего приложения - это бизнес логика. Именно ее вы и описываете в коде резолверов. Пример - на мутации оплаты вы не можете просто списать средства с аккаунта, нужно сперва проверить что средств достаточно. Соответственно в резолвере вы сперва дергаете текущий баланс: const balance = await ctx.db.query(...) и дальше если меньше нуля то кидаете ошибку. Т.е. суть в том что вам не надо писать SQL запросы, вместо них используете сгенерированные Призмой функции, которые к тому же типизированы.
03:37:45 ПП
User 481349
Речь про сервер, так? 

Допустим, меня устраивает приложение без доп бизнес логики, достаточно того что делает призма, в этом случае мне нужно описывать запросы/мутации/подписки или можно использовать то что призма сгенерила?

Не понимаю почему это можно делать двумя способами, и куда коней запрягают
03:44:06 ПП
User 296063066
User 481349
Речь про сервер, так? 

Допустим, меня устраивает приложение без доп бизнес логики, достаточно того что делает призма, в этом случае мне нужно описывать запросы/мутации/подписки или можно использовать то что призма сгенерила?

Не понимаю почему это можно делать двумя способами, и куда коней запрягают
Совсем без бизнес-логики? По сути вы просто открываете базу напрямую для доступа с клиента. Это какой-то редкий случай.
03:45:24 ПП
User 296063066
Любой пользователь сможет делать что угодно с данными.
04:04:08 ПП
User 481349
Что предоставляет призма? Может быть я просто не так понял какую проблему она решает. Я понял что она дает GraphQL абстракцию от прямого доступа к БД. Верно? @Checkmatez
04:57:13 ПП
User 83376394
User 481349
Что предоставляет призма? Может быть я просто не так понял какую проблему она решает. Я понял что она дает GraphQL абстракцию от прямого доступа к БД. Верно? @Checkmatez
Почти, но резолверы писать нужно самому.
05:14:18 ПП
User 321317845
А чем призма тогда отличается от других решений?
05:14:26 ПП
User 321317845
Ну т.е. например от оригинального graphql сервера
05:14:45 ПП
User 478207156
User 481349
Что предоставляет призма? Может быть я просто не так понял какую проблему она решает. Я понял что она дает GraphQL абстракцию от прямого доступа к БД. Верно? @Checkmatez
Я пока вот не могу понять, зачем она вообще нужна(
05:14:50 ПП
05:15:18 ПП
User 321317845
Миграции за час можно сделать
05:15:25 ПП
User 321317845
а всё остальное и так есть
05:17:17 ПП
User 481349
User 321317845
А чем призма тогда отличается от других решений?
+
05:17:31 ПП
User 478207156
User 321317845
а всё остальное и так есть
о, эт ты?) https://www.youtube.com/watch?v=QLR-QDDi21U
youtube.com/watch?v=QLR-QDDi21U
Доклад посвящён проблеме текущих реализаций API, теории серверного технологического стека GraphQL, как «серебрянной пули» в решении проблем, а также языку Gr...
05:35:55 ПП
User 321317845
@yakotika ога
05:48:46 ПП
User 321317845
Ничоси, я уже знаменит :D
05:49:55 ПП
User 478207156
User 321317845
Ничоси, я уже знаменит :D
Доклад отличный, все ясно и понятно объяснил)
05:52:23 ПП
User 321317845
Ну не всё. Первый вариант был пор то, сколько трешака всякого на беке можно встретить) Но решили половину урезать в сторону исторической сводке по языку
05:53:34 ПП
User 321317845
@yakotika но всё равно спасибо)
07:17:58 ПП
User 144022504
User 321317845
А чем призма тогда отличается от других решений?
чем другие решения превосходят prisma?
10:24:58 ПП
User 228403837
User 144022504
чем другие решения превосходят prisma?
ну так чем призма от других решений отличается?))
10:37:13 ПП
User 43503298
Prisma топчик. Это инструмент для создания GraphQL интерфейса к БД.

Она не отличается от других решений, потому что других решений просто нет. Разве что postgraphile, но тот только для постгреса.

Одна из киллер фич - это подписки. Без призмы вы будете сами писать резолвер своей подписки, а это для стандартных баз не так-то просто. Тут нужен либо event sourcing, либо какие-то либы типа papertrail чтобы ловить апдейты в бд. В призме это уже есть все.

Другая киллер фича это то, что без призмы вы пишите резолв функции через SQL запросы. С призмой вы этого не делаете. Призма генерирует GraphQL CRUD интерфейс к БД. Таким образом, в пишите GraphQL запрос, а призма сама из него формирует SQL.