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

Проверенные VDS на SSD в Европе и России

Тема в разделе "Вопросы по теории программирования", создана пользователем Adelf, 9 авг 2017.

  1. Adelf

    Adelf Laravel&PhpStorm Команда форума

    Сообщения:
    3.040
    Ваш город:
    Казань
    Adress:
    Kazan, Russia
    Country:
    Location on Map:
    Мда. Тут я немного запутал вас. Поскольку у нас на проекте ддд и не пахнет, то для меня это просто на интерес, ибо уже давно реализовано в лоб. Популярность нужна во write модели. Когда по каким то причинам удаляют(unpublish) что-то популярное, то мы должны как-то среагировать. Либо не удалять, а поставить в какой-то список для модератора, либо удалить, но тоже как-то уведомить человека.
    Популярность зависит от от шарингов в фейсбук, от количества пришедших с этих шарингов. Все это считается отдельной системой и во write модели этому места особо нет, но вот вдруг понадобилось изменить поведение в зависимости от этого. В данной конкретной ситуации это решилось просто обработчиком PostWasDeleted эвента, но мне интересны другие возможные ситуации, когда допустим у популярного поста нельзя менять заголовок.
    Думаю, самое здравое решение в данной ситуации - это действительно денормализованное поле popular, которое будет считаться какнибудь по крону, юзая данные из той системы и просто напрямую ставя setPopular
     
  2. Вурдалак

    Вурдалак Newbie

    Сообщения:
    5.862
    Ваш город:
    Russia, Moscow
    Adress:
    Moscow, Russia
    Country:
    Location on Map:
    Можно вообще тупо передавать флаг bool $popular во все нужные методы, если это считается где-то в другой подсистеме, и напрямую передавать его в событие. Можно вместо флага передавать объект типа PostRatings, где будет информация по шерингам и прочему, если хочется эту логику держать в том же контексте, что и сам Post. Тут нет никакого единого решения, смоделировать можно по-разному в зависимости от удобства и предпочтений.

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

    AnrDaemon Продвинутый новичок

    Сообщения:
    3.907
    Ваш город:
    Moscow, Russia
    Adress:
    Moscow, Russia
    Country:
    Location on Map:
    Тебе это сразу сказали. А поскольку эта модель используется в ограниченном количестве мест, проблемы это не создаёт.
    А зачем?… unpublish это не физическое удаление.
     
  4. Adelf

    Adelf Laravel&PhpStorm Команда форума

    Сообщения:
    3.040
    Ваш город:
    Казань
    Adress:
    Kazan, Russia
    Country:
    Location on Map:
    И мы должны смириться с тем, что популярный материал, на который народ приходит с фейсбука теперь выдает 404?
     
  5. AnrDaemon

    AnrDaemon Продвинутый новичок

    Сообщения:
    3.907
    Ваш город:
    Moscow, Russia
    Adress:
    Moscow, Russia
    Country:
    Location on Map:
    Во-первых, при чём тут "смириться"? Во-вторых, какие есть альтернативы?