Size: a a a

2022 January 05

Kd

Konstantin dmz9 in symfony
couponRepository->remove($coupon)
flush
messageBus->dispatch(CouponDeletedEvent::of($coupon))

так и делаем, то что там кому то уведомление не дойдет - не очень страшно, если юзер все же решит заюзать промокод ему и на месте использования скажут что он протух (помимо превентивного уведомления на почту)
источник

D

Dmitry in symfony
т.е вы не заботитесь о событиях для промокода ?
источник

Kd

Konstantin dmz9 in symfony
это уже другой вопрос - надежности обработки событий, а не то что ты спрашивал
источник

SB

Sergei Baikin in symfony
У каждого свои требования от бизнеса они заботятся но если потеряется то ничего страшного
источник

D

Dmitry in symfony
не, вопрос надежности доставки события не рассматриваем
вы бросаете событие о том что промокод удален при удалении купона или нет ?
источник

Kd

Konstantin dmz9 in symfony
после фактической записи в базу (предпочитаю soft удаление с пометкой протухания, а не стирание записей из бд)
источник

D

Dmitry in symfony
вы делаете это в хендлере ? в сущности ? через ивенты ОРМ ? ваш вариант
источник

Kd

Konstantin dmz9 in symfony
в контроллере, там же где коммит транзакции орм
источник

D

Dmitry in symfony
понял, мне кажется это нарушит СРП, представьте что в купон еще чего нужно будет добавить
источник

D

Dmitry in symfony
придется везде бегать и прописывать удаление дополнительной части
источник

Kd

Konstantin dmz9 in symfony
добавить что например?
$coupon->revoke($firstUserWhoSubmittedPromocode)
flush
$messageBus->send(nudes)
источник

D

Dmitry in symfony
ну допустим Coupon->OneToMany-> Valid Periods
источник

D

Dmitry in symfony
т.е при удалении купона теперь нужно будет побегать по коду и добавить valid period удаление
источник

Kd

Konstantin dmz9 in symfony
агрегаты
источник

Kd

Konstantin dmz9 in symfony
не надо бегать, делай дизайн такой чтобы твой этот код по валидныым периодам был внутри купон-сущности
источник

D

Dmitry in symfony
это во первых, а во вторых, представьте что кто-то в другой команде сделал
repository->get(couponId)
repository->remove(coupon)

а дальше не удалил и события не бросил
источник

D

Dmitry in symfony
т.е события создаем внутри купона и их возвращаем т.е вариант 2 получается ?
источник

Kd

Konstantin dmz9 in symfony
проблема другой плоскости. с дуру можно и член сломать
источник

D

Dmitry in symfony
понимаю, поэтому и спрашиваю кто как решает вопрос событий дабы уменьшить вероятность сломать себе шею
источник

SB

Sergei Baikin in symfony
мы просто свой ServiceBus написали 🤕
Я в нем постарался сделать так чтобы вероятность меньше была
Но думать все равно надо :(
источник