
Bohdan
27.06.2018
11:27:24
даже не сага, а транзакция

Sergey
27.06.2018
11:27:33

Артур Евгеньевич
27.06.2018
11:27:56
Команла не сбрось пароль
А дай мне ссылку на сброс

Google

Артур Евгеньевич
27.06.2018
11:28:28
Т. Е до отправки емайла я не могу быть уверен что событие свершилось

Bohdan
27.06.2018
11:28:40

Sergey
27.06.2018
11:29:06
А дай мне ссылку на сброс
команда: хочу сделать запрос на сброс пароля
ивент - запрос сделан, вон временный токен
листенер - о, надо отпавить письмо мудаку
сайд эффект - письмо ушло

Bohdan
27.06.2018
11:29:13

Sergey
27.06.2018
11:29:56
ну и да - можно просто сделать декоратор вокруг сервиса нотификаций который разруливает твои эти параметры под юзера

Артур Евгеньевич
27.06.2018
11:29:56

Sergei
27.06.2018
11:30:07

Sergey
27.06.2018
11:30:35
Ок, а где тогда получить язык и домен?
домен - это для генерации ссылки - пусть за это отвечает отдельный сервис. язык - опять же пусть это будет уметь сервис который тебе сообщеньки генерит зная юзера
это только им нужно и пусть только они это умеют и хранят этот стэйт. ты им даешь для кого а они знают как

Артур Евгеньевич
27.06.2018
11:31:09
Язык не от юзера

Sergey
27.06.2018
11:31:19

Артур Евгеньевич
27.06.2018
11:31:27
А от много чего

Google

Артур Евгеньевич
27.06.2018
11:31:36
В ряде случаев от запроса

Sergey
27.06.2018
11:31:41
ну формализуй задачу тогда поговорим

Артур Евгеньевич
27.06.2018
11:31:57
У нас много сайтов, использующих апи наше партнёрское
И надо знать откуда пришёл запрос обязательно

Sergey
27.06.2018
11:34:41
ну блин чел, пили кастыль, все так делают
если у тебя нет возможности делать как-то иначе - в чем смысл интересоваться как делать лучше?)

Артур Евгеньевич
27.06.2018
11:41:45
Я предложил три варианта 1 из которых считаю менее гавнистым
Но мне по чабжу никто пока ниче не сказал)

Bohdan
27.06.2018
11:46:00
я тебе уже говорил: твой менее говнистый вариант менее говнистый
но в общем и целом твое построение команд говнистое
если ты не хочешь отходить от своей логики - используй третий вариант
или складывай контроллером просто в параметры команды
https://dev.tube/
фактически - агрегатор видосов по теме с ютуба
сейчас, походу, собирают все интересное

Dmitriy
27.06.2018
11:59:31

Артур Евгеньевич
27.06.2018
12:02:10
Есть команда получить ссылку на пассворл резет
Я не могу здесь уйти от того что это ссылку надо отправить
С определёнными опциями

Bohdan
27.06.2018
12:03:15
вопрос только в том, где ты эти опции получаешь

Артур Евгеньевич
27.06.2018
12:26:55
я считаю что их надо получать при общении с реквестом пользователя, т.к они могут быть с ним связаны
Вот еще плюс в мою точку зрения.
ДОпустим я решил делать по вашей схеме
запрос на емайл с сылкой резета => событиеРезетЛинВозРеквестед
И событие обрабатывается допустим в порядке очереди откуда то, мне же надо получить данные, которые существовали во время запроса? Надо. А если бы я это делал в рамках сервиса отправки писем, то контекст был бы другой(был бы вообще непользовательский запрос на франзузском языке от партнера somepartner.com а просто консольная окмнада на выборку очереди), а т.к у меня сохранен контектс я смогу извлечь язык и партнер

Google

Sergey
27.06.2018
12:46:55
у тебя все данные либо в ивенте либо просто можно откуда-то взять. данные в запросе нужны были только твоему первому обработчику команды

Артур Евгеньевич
27.06.2018
12:47:23

Sergey
27.06.2018
12:47:41

Артур Евгеньевич
27.06.2018
12:47:49
да
причем пользователи многих партнеров могут не знать даже про основной сайт и про других партнеров тем более

Sergey
27.06.2018
12:48:28
то есть ты ресетишь пароль а сайте А и меняется на остальных?
или у тебя юзер закреплен за каким-то сайтом?
ну то есть либо у тебя 1:1 юзер-сайт либо у тебя другие проблемы)

Артур Евгеньевич
27.06.2018
12:49:21
Да меняется на всех. Юзер не закреплен технически. Но он может не знать вообще что он зареган на 1000 других сайтах

Sergey
27.06.2018
12:49:40

Артур Евгеньевич
27.06.2018
12:49:52

Артур Евгеньевич
27.06.2018
12:50:03
если он на новом попытается зарегаться, то ему скажут что у вас уже есть аккаунт

Sergey
27.06.2018
12:50:05
да, но вот что бы один юзер пользовался сразу более чем одним сайтом?)

Bohdan
27.06.2018
12:50:56
шина не подразумевает асинхронность
точнее, это адекватно было бы, но не обязательно

Артур Евгеньевич
27.06.2018
12:51:47

Sergey
27.06.2018
12:52:04
от такого положения дел

Google

Admin
ERROR: S client not available

Артур Евгеньевич
27.06.2018
12:52:51
такая модель монетизации

Sergey
27.06.2018
12:53:09

Bohdan
27.06.2018
12:54:08

Sergey
27.06.2018
12:54:18
оно похоже но все же чуть проще

Bohdan
27.06.2018
12:54:33

Sergey
27.06.2018
12:55:02
а для команд да - просто методы дергать. разница не существенна. за счет шины просто можно скрыть асинхронщину (которой может и не быть) и зафорсить правило что обработчики команд ничего не возвращают (во имя CQS а не CQRS)

Артур Евгеньевич
27.06.2018
12:55:07
всмысле о чем мы дальше говорим?)) Есть бизнесс требование, оно вполне логично - люди создают приложения свои с нашей базой пользователей, юзая наше апи. Мне как разработчику нужно исходить из бизнесс тербований

Sergey
27.06.2018
12:55:30

Bohdan
27.06.2018
12:55:33
пока телега лежала - я тут вопрос писал
никто не встречал подобных штук, но без завязки на гит? http://gitgraphjs.com/
хочу описывать потоки команда-ивент

Sergey
27.06.2018
12:56:07
или вообще можно через graphviz

Bohdan
27.06.2018
12:57:01
второй не оч, я хочу хранить исходники в репе тоже

Sergey
27.06.2018
12:57:02
http://www.webgraphviz.com/

Bohdan
27.06.2018
12:57:15
а, интересно
надо подумать

F01134H
28.06.2018
15:11:05
У меня есть 4 gateway для работы с 4 нодами. Каждая нода возвращает ответ в виде json, у каждой ноды он разного формата (и разные требования валидации). На данный момент у меня на каждую ноду по одному Response классу, который имеет метод result() - с отформатированным и провалидированным результатом. Так же есть метод make(string json) (возвращает инстанс своего класса), который парсит и валидирует полученные данные. Так же в этом методе падают исключения при ошибке валидации либо парсинга. Вопрос - как это нормально переписать, что бы респонс был респонсом, а не сборной солянкой?

Google

F01134H
28.06.2018
15:18:03
при этом у меня часть валидации глобальная для всех респонсов, а часть - только для конкретного респонса
на ум приходит респонс фактори
остается вопрос - оставлять ли валидацию в респонсах?
либо делать унифицированный респонс, в который будет инжектиться валидатор под конкретный гейтвей

Bohdan
28.06.2018
16:09:46
композиция респонсов?

Evgeniy
28.06.2018
16:39:32
зачем все так сложно фоли?)

F01134H
28.06.2018
16:43:15
Потому что хуй знает

Evgeniy
28.06.2018
16:46:10
просто ты вчера еще писал я сразу говорил ты хуйню делаешь )