@symfony_php

Страница 525 из 1418
Sergey
25.12.2017
23:27:20
Можешь пример кинуть как ты хочешь тайп ленг использовать и резолверы указывать? Примерное как в бандле графовском сделано?
class UserResolver { /** @GraphQL\Path("me") */ public function me() { return $this->tokenStorage->getToken()->getUser(); } /** @GraphQL\Type('UserProfile') */ public function resolveUser(User $user) { return ['id' => $user->asId()]; } }

type Query { me: UserProfile }

как-то так

то есть это те же контроллеры но чуть-чуть прикольнее

Google
Big_Shark
25.12.2017
23:28:59
как-то так
Вот почему такие резолверы просто не сгенерить, а дальше человек пускай там делает что хочет и вызывает какие угодно сервисы

Sergey
25.12.2017
23:29:28
это можно чуть позже запилить дополнительно

но в целом.... на более-менее полезный генератор я потрачу месяц... он будет экономить мне минуту в день.... окупится он.... не окупится он короч

Big_Shark
25.12.2017
23:30:42
я плохо понимаю что именно ты хочешь генерить... ну и потом - это вне скоупа MVP
Класс в котором у меня будет resolveUser, можно даже сразу с возвратам пустого массива со всеми полями )

Sergey
25.12.2017
23:31:01
и если тебе нужны все поля

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

Big_Shark
25.12.2017
23:32:04
но в целом.... на более-менее полезный генератор я потрачу месяц... он будет экономить мне минуту в день.... окупится он.... не окупится он короч
Ну это можно сделать потом, с этим я не спорю, просто у меня понимание тут работы с тайп ленг примерное как с БД, то есть я его поменял, добавил какието поля, функции и тд, запустил команду, он создал то чего нет, и я пошел уже сделал там возврат корректноо обьекта или чтото другое

Sergey
25.12.2017
23:32:05
и если тебе нужны все поля
тут поясню - у тебя есть юзер, есть пол id, name, birthday и userpic и для userpic ты хочешь свой ресолвер с аргументами

Big_Shark
25.12.2017
23:32:53
тут поясню - у тебя есть юзер, есть пол id, name, birthday и userpic и для userpic ты хочешь свой ресолвер с аргументами
Вот смотри, мне не очень нравится что что этот резолвер будет оторван от юзера, как по мне он должен быть внутри него

Google
Sergey
25.12.2017
23:33:31
смешивать UI логику формирования урла на картинку и бизнес логику?

Big_Shark
25.12.2017
23:34:02
Потому что у меня такиз полей может быть штук 5 в одном типе, и еще штук 5 в другом, в итоге если у каждого резолвер, то получается что резолверы будет типа resolveUserDescription, resolveUserAvatar и тд

Sergey
25.12.2017
23:34:56
Не внутри обьекта юзер, а внутри резолвера именно
я не понимаю что значит "внутри ресолвера". Ресолвер это функция, метод сервиса.

в этом же сервисе можешь держать любые ресолверы которые нужны для этого типа

или группы филдов

это тебе решать

как структурировать это добро

Big_Shark
25.12.2017
23:35:49
Смотри, у типа есть куча полей, и для какого-то отдельного поля у нас может быть отдельный резолвер, верно?

Sergey
25.12.2017
23:36:14
но продолжай

Big_Shark
25.12.2017
23:37:10
В итоге ты предлагаешь на каждое такое поле делать отдельную функцию резолвер, или отдельный тип?

Sergey
25.12.2017
23:37:50
type UserProfile { id: ID! name: String! birthDay: DateTime userPic(size: Size): Thumb }

В итоге ты предлагаешь на каждое такое поле делать отдельную функцию резолвер, или отдельный тип?
я привел тебе схему - как бы ты в идеале хотел бы видеть ресолвер для этого типа?

Big_Shark
25.12.2017
23:38:46
Ну по факту это кастомный тип, и для него отдельный резолв

type UserProfile { id: ID! name: String! birthDay: DateTime description: String <-- очень большя срань которая хранится вообще хз где }

Вот как в таком случае быть

делать отдельный типа description?

Sergey
25.12.2017
23:39:59
function resolveUser(User $user) { return [ 'id' => $user->id, 'name' => $user->name, 'birthDay' => $user->birthDay, 'description' => $user->description, ]; }

Google
Sergey
25.12.2017
23:40:21
то где хранится твой дескрипшен - это уже не мое дело - этим пусть персистенс лэйер занимается

но давай вернем мой пример с userPic и аргументом (или добавь аргумент в дескрипшен)

Big_Shark
25.12.2017
23:41:04
function resolveUser(User $user) { return [ 'id' => $user->id, 'name' => $user->name, 'birthDay' => $user->birthDay, 'description' => $user->description, ]; }
Но для этого мне придется достать дескрипшен каждый раз, а я этого ой как не хочу

Sergey
25.12.2017
23:41:18
делать отдельный типа description?
я вот думаю на тему "ресолвер для филда типа"

Но для этого мне придется достать дескрипшен каждый раз, а я этого ой как не хочу
data loaders, промисы и прочие штуки. Ну и опиши все же что именно ты хочешь

вот есть у тебя этот дискрипшен который ты почему-то должен отдельно получать, так?

где ты хочешь это делать? как бы ты хотел видеть ресолверы?

Big_Shark
25.12.2017
23:42:17
type UserProfile { id: ID! name: String! birthDay: DateTime description(format: Format): String }

Sergey
25.12.2017
23:42:26
да, норм

как ты хочешь видеть ресолвер и почему не хочешь просто сделать еще один метод в том же сервисе?

Big_Shark
25.12.2017
23:43:21
вот есть у тебя этот дискрипшен который ты почему-то должен отдельно получать, так?
Ну на самом деле у меня эта цена, и ее я должен подсчитать, а иногда и запросить у отдельного сервиса. И это как бы и поле, но как бы каждый раз цена не нужна

Big_Shark
25.12.2017
23:43:49
как ты хочешь видеть ресолвер и почему не хочешь просто сделать еще один метод в том же сервисе?
Ну как минимум если это колбак допустим, то я бы уже не загружал данные если они не нужны

Sergey
25.12.2017
23:44:25
Ну как минимум если это колбак допустим, то я бы уже не загружал данные если они не нужны
у тебя для этих данных отдельный ресолвер который будет вызываться только и только тогда, когда ты запросил эти данные

Big_Shark
25.12.2017
23:44:47
Ну как минимум если это колбак допустим, то я бы уже не загружал данные если они не нужны
Но в тоже время я бы видил что все мои поля в сборе, а не так что тут я вернул 3 поля, там еще 2, и вон там еще одно

Sergey
25.12.2017
23:45:06
мне приятнее расценивать ответ сервера как композицию данных

Big_Shark
25.12.2017
23:45:32
а теперь задумайся - а тебе это точно нужно?
Ок, тогда напиши как бы у тебя было это с примером с описанием

Sergey
25.12.2017
23:45:41
и меня в целом не парит что для одной записи я 3 поля тут достаю и еще 2 поля там

Ок, тогда напиши как бы у тебя было это с примером с описанием
два ресолвера, один для юзера - второй для дексприпшена твоего

Google
Sergey
25.12.2017
23:46:09
вроде бы все очевидно

Big_Shark
25.12.2017
23:47:08
два ресолвера, один для юзера - второй для дексприпшена твоего
И второй резолвер тоже на вход будет принимать юзера? А он по пули будет работать? Получается у тебя 1 будет на тип, и 1 на путь? или на филд?

Big_Shark
25.12.2017
23:51:01
филд типа можно)
Ну ладно, я с этим готов мирится, если ты просто сделаешь норм АПИ ко всему остальному)

Big_Shark
25.12.2017
23:52:22
что есть "все остальное"?
Задача простой, я хочу зайти в редми, найти пример кода, или квик старт, посмотреть на код, и не выплюнть свой кофе на экран ноутбука как мне приходится делать когда я смотрю все либы который есть сейчас)

Big_Shark
25.12.2017
23:53:06
буду думать, через недельку чего покажу
Напишешь мне в ЛС, или тут с собачкой укажешь

Admin
ERROR: S client not available

Sergey
25.12.2017
23:53:12
))

Big_Shark
25.12.2017
23:53:17
пока я чисто прототип запилил корявый
Покажи прототип если можешь)

Sergey
25.12.2017
23:53:38
Покажи прототип если можешь)
не. там свитч в контроллере)) я пока не запилил нормально роутинг ресолверов

короч как чего будет - сразу покажу, это может будет уже на днях

Big_Shark
25.12.2017
23:54:14
не. там свитч в контроллере)) я пока не запилил нормально роутинг ресолверов
Меня мало интересует код внутри, меня интересует то что я буду видить при использовании)

Big_Shark
25.12.2017
23:54:30
ок

@fes0r ты сф4 же ставил?

Sergey
25.12.2017
23:57:15
да

Google
Big_Shark
25.12.2017
23:59:19
да
Я вот уже несколько раз ставил для разных пэт проэктов и тд, и каждый раз меня убивало что надо грубо говоря пакеты ставить и ставить и ставить, как думаешь на счет скрипта который после установки будет спрашивать что нужно, мол апи надо? рест или граф? Граф? Какую из вот этих 3 либ, админка нужна? Какую из вот этих либ, и тд

То есть список вопросов определенный, который позволит достаточно быстро выбрать что тебе нужно, и уже получить все это сразу

а не устанавливая по одному, пытаясь вспомнить или найти их названия

Sergey
26.12.2017
00:00:28
у меня нет таких потребностей... у меня в полне стандартные требования к скелету проекта)

ну и в целом ты можешь рецептов себе наделать

ну либо можешь конечно плагин для композера замутить который будет нормально пакеты формировать... но лично мне это не особо нужно а потому я плохой советчик

Big_Shark
26.12.2017
00:01:24
ну и в целом ты можешь рецептов себе наделать
Ну я так и сделаю, а возможно просто в будушем это убдет как установка софта на убунту, когда в одной команде половину софта ставишь

Sergey
26.12.2017
00:01:55
так там по стандарту половины нет же)
я просто замутил себе скелет проекта)

свой

Big_Shark
26.12.2017
00:02:06
Sergey
26.12.2017
00:02:51
все на гитхабе но под 4-ку пока жалкая веточка висит. я сча на пет проджекте пробую, например я отказался от lexic jwt

ну и пока не допилил замену

отказался от fos rest

но еще не допилил

так что когда пет проджект допилю - повыношу все что натворил

и займусь наконец убером (проект пример о том как готовить доктрину ну и в целом что-то прикольное)

а пока пилю свои чатики и эксперементирую с graphql

Vladislav
26.12.2017
00:04:06
еще бы ланосы поменял в убере, так вообще золотым человеком был бы

Sergey
26.12.2017
00:08:46
Свои чатики?
задолбали сервисы типа твиллио или лэйера

ну и просто не могу уже пол года за них сесть

Big_Shark
26.12.2017
00:10:05

Страница 525 из 1418