
Sergey
26.12.2017
08:18:57
я все же думаю что учитывать что запросили - сильно усложняет и в целом первое время точно можно не заморачиваться
а потом - делать 2-3 запроса а не 1+N+M

smile
26.12.2017
08:20:02
Типо имеешь в виду запросить пользователей, потом отдельно все роли для этих пользователей и тогда склеить?

Google

Sergey
26.12.2017
08:20:18
тип того

Константин
26.12.2017
08:20:36
Говорят есть какие то проблемы с http cache, по сравнению с rest

smile
26.12.2017
08:21:30
тип того
Думал о таком тоже, но как-то подсунуть джоин вышло попроще... Поэтому оставил пока так

Sergey
26.12.2017
08:22:09

smile
26.12.2017
08:22:11

Sergey
26.12.2017
08:22:23

smile
26.12.2017
08:23:09
Так если 100 пользователей - он разве не пойдет 100 раз в резолвер Филда?
Если нет, то видимо я не до конца понял как резолвер Филда работает...

Константин
26.12.2017
08:23:46

Sergey
26.12.2017
08:24:22

Константин
26.12.2017
08:24:42
чта?
Что значит нет http cache?

Sergey
26.12.2017
08:24:44

smile
26.12.2017
08:25:06
Ну вот, так и знал. Даталоадеры... Чет они мне вообще не зашли

Google

Sergey
26.12.2017
08:25:24
Что значит нет http cache?
ну то и значит что http cache бесполезен и тебе надо делать свой. Если хочешь можешь взять relay + уникальные идентификаторы и будет у тебя простой и удобный кэш
есть еще persisted queries подход
тогда можно пользоваться http кэшем

smile
26.12.2017
08:27:58
Одно что подкупает в промисах, что резолвер Филда можно будет в пару других вложить и не парится. С моим подходом так не выйдет - нужно в каждом филде где могут быть вложенности - контролировать это. Так что возможно я к этому прийду..

Sergey
26.12.2017
08:59:42
так?
ну то есть я к тому что то что у тебя появилась информация о том что юзается не сильно должно заставлять кастылять джойны

smile
26.12.2017
09:05:22

Bohdan
26.12.2017
09:59:02
кто как дружит свои апишки со сваггером?

Sergey
26.12.2017
09:59:49

Bohdan
26.12.2017
10:00:06
вообще не юзаешь?

Sergey
26.12.2017
10:00:25
ай не, raml/api bluerptint как-то поинтереснее... сваггер более-менее когда у тебя оно из кода генерится

Bohdan
26.12.2017
10:01:30
я просто продолжаю свою тему с двусторонней валидацией
хочется же еще и какой-то гуй для апишки на будущее
и возникла мысль описать jjson схемами входящие данные для ендпоинтов, а в сваггере эти схемы подтягивать

Shmaltorhbooks
26.12.2017
10:03:36
так есть же какая-то либа для phpunit, который скармливаешь урл сваггера, данные для запросов, а дёргает эндпоинты и валидирует ответы по схеме сваггера
или ты не о том?

Boris
26.12.2017
10:03:43
Привет всем. Подскажите, пожалуйста, насчет миграций. Как их добавить в бандл - понятно, но как быть с конфигурацией для их загрузки?

Bohdan
26.12.2017
10:03:49
не, не про тестирование
валидация по одинаковой схеме на фронте и на бекенде

Shmaltorhbooks
26.12.2017
10:04:04

Google

Shmaltorhbooks
26.12.2017
10:04:15
что с конфигой загрузки?

Boris
26.12.2017
10:04:39
а что с ней?
В symfony4 вижу doctrine_migrations.yaml, но не могу же я в него добавить путь для миграций бандла.

Sergey
26.12.2017
10:05:00
symfony flex же)

Sergey
26.12.2017
10:05:02

Sergey
26.12.2017
10:05:41
doctrine_migrations:
dir_name: '%kernel.project_dir%/src/Migrations'
namespace: DoctrineMigrations

Shmaltorhbooks
26.12.2017
10:05:46
Ребят, а кто как органозивывает что-то типа пре-валидации экшнов? Например, что-то в духе "если у поста удалить последний тег, то он станет неопубликованным"? Суть в том, что есть несколько действий, которые могут иметь разные последствия и перед их совершением надо проанализировать что именно произойдет и показать какую-то бульку с этой инфой юзеру на UI.
Можно, по идее, формами и показывать ошибки формы, но тогда нужна отдельная форма на превалидацию экшна и отдельная на сам экшн.
Можно с каким-то параметром force для контроллера и если он не задан - кидать исключения и показывать текст исключения, но это как-то костыльно.

Sergey
26.12.2017
10:05:52
dir_name это и есть путь

Sergey
26.12.2017
10:07:01

Gaiaz Iusipov
26.12.2017
10:07:06

Sergey
26.12.2017
10:07:10
что-то типа dry-run

Boris
26.12.2017
10:07:29

Sergey
26.12.2017
10:07:31

Sergey
26.12.2017
10:07:32
обычно такие штуки прямо на клиенте пилят

Shmaltorhbooks
26.12.2017
10:07:40
клиенту доверять низзя, для апишечки это тоже надо

Sergey
26.12.2017
10:07:54

Boris
26.12.2017
10:08:02

Sergey
26.12.2017
10:08:09
Ага
ты типа миграции для разных бандлов херачишь?

Google

Shmaltorhbooks
26.12.2017
10:08:33

Sergey
26.12.2017
10:08:36
в этом же нет смысла - миграции одни на все приложение

Gaiaz Iusipov
26.12.2017
10:08:43

Boris
26.12.2017
10:08:44

Sergey
26.12.2017
10:08:44

Boris
26.12.2017
10:09:13

Shmaltorhbooks
26.12.2017
10:09:18
ну так покажи))
так вот я и спрашиваю как все эти разные причинно-следственные связи правильно собрать и хэндлить

Sergey
26.12.2017
10:09:41

Admin
ERROR: S client not available

Sergey
26.12.2017
10:10:27
да, выходит небольшое дублирование бизнес правил но в целом не критично.
так как итоговый результат выполнения этих правил отличается

Boris
26.12.2017
10:11:03

Shmaltorhbooks
26.12.2017
10:11:10
о клиенте я ничего не знаю и не могу ручаться за то, как он будет разруливать. мне надо какой-то организованный способ собрать в кучу причинно-следственные связи и выдавать инфу о том, какое действие к каким последствиям приведет.
реально получается дублирование логики

Sergey
26.12.2017
10:11:28

Shmaltorhbooks
26.12.2017
10:11:58
типа есть логика, которая сгенерирует все последствия, а если еще какой-то валидатор, который проверит кто что хочет менять и сообщит о том, что будет впоследствии

Sergey
26.12.2017
10:12:28
но проще "узнать" что там с клиентом и ручаться за него

Boris
26.12.2017
10:13:09

Shmaltorhbooks
26.12.2017
10:13:30

Google

Sergey
26.12.2017
10:13:40

Boris
26.12.2017
10:13:49

Sergey
26.12.2017
10:14:35
когда пилишь апи - это иногда невозможно)
ну я тебе описал как бы я это делал - на вход данные - на выход коллекций действий с данными. никаких сайд эффектов. потом после конфирмации действия просто применяются
за хранение действий будет отличать клиент - тебе их никуда сохранять не надо. Для применения действий можно будет замутить просто отдельный эндпоинт который будет принимать массив оных
как именно получать массив действий - другой вопрос и я тут сходу не скажу.
тут надо чуть больше знать а у меня нет времени

Shmaltorhbooks
26.12.2017
10:16:10
ок, спасибо)
+ тебе за это не платят)))

Sergey
26.12.2017
10:30:57
поудалял из группы лишние файлы, оставил только книжки
и вот вам еще бонус

Константин
26.12.2017
11:05:47
@fes0r как тебе вариант использования генераторов? https://gist.github.com/grachevko/59662741ed2984f564364391c5230dfe
Не знал, что без вызова Generator::current() или Generator::next() код до yield не выполняется.

Sergey
26.12.2017
11:14:52
еще send можно вызвать)

Константин
26.12.2017
11:52:41
А send что делает?

?
26.12.2017
11:54:26
Передает значение в генератор

Константин
26.12.2017
12:42:02
ээ

Sergey
26.12.2017
12:44:56
$foo = yield; // заполни $foo через send

Константин
26.12.2017
12:45:33
Я думал прерывание происходит при достижении yield.

Sergey
26.12.2017
12:45:41
не
если в функции есть yield