DDD entity хочет конфиг

Adelf

Administrator
Команда форума
Мда. Тут я немного запутал вас. Поскольку у нас на проекте ддд и не пахнет, то для меня это просто на интерес, ибо уже давно реализовано в лоб. Популярность нужна во write модели. Когда по каким то причинам удаляют(unpublish) что-то популярное, то мы должны как-то среагировать. Либо не удалять, а поставить в какой-то список для модератора, либо удалить, но тоже как-то уведомить человека.
Популярность зависит от от шарингов в фейсбук, от количества пришедших с этих шарингов. Все это считается отдельной системой и во write модели этому места особо нет, но вот вдруг понадобилось изменить поведение в зависимости от этого. В данной конкретной ситуации это решилось просто обработчиком PostWasDeleted эвента, но мне интересны другие возможные ситуации, когда допустим у популярного поста нельзя менять заголовок.
Думаю, самое здравое решение в данной ситуации - это действительно денормализованное поле popular, которое будет считаться какнибудь по крону, юзая данные из той системы и просто напрямую ставя setPopular
 

Вурдалак

Продвинутый новичок
Можно вообще тупо передавать флаг bool $popular во все нужные методы, если это считается где-то в другой подсистеме, и напрямую передавать его в событие. Можно вместо флага передавать объект типа PostRatings, где будет информация по шерингам и прочему, если хочется эту логику держать в том же контексте, что и сам Post. Тут нет никакого единого решения, смоделировать можно по-разному в зависимости от удобства и предпочтений.

напрямую ставя setPopular
->becomePopular, PostBecamePopular, ... Это может быть полезно для статистики, также можно в read model будет записать дату, когда Post стал популярным и т.д.
Либо что-то типа ->announceRatings(PostRatings $ratings).
 

AnrDaemon

Продвинутый новичок
Популярность нужна во write модели.
Тебе это сразу сказали. А поскольку эта модель используется в ограниченном количестве мест, проблемы это не создаёт.
Когда по каким то причинам удаляют(unpublish) что-то популярное, то мы должны как-то среагировать.
А зачем?… unpublish это не физическое удаление.
 

AnrDaemon

Продвинутый новичок
Во-первых, при чём тут "смириться"? Во-вторых, какие есть альтернативы?
 
Сверху