Добрый день. Хочу понять как правильно организовать получение агрегатов. Сейчас существует такой агрегат - Инцидент. Он представляет собой инцидент ИБ со всякими связями и правилами. И вот в случае если инцидент удаленный (пометка такая) или архивный, правила меняются, в частности его нельзя просто так больше редактировать (под редактированием понимает заполнение набора полей доступных этому инциденту). Сейчас, когда приходит запрос в сервис на изменение, из репозитория инцидентов по идентификатору получаем агрегат Инцидент и выполняем над ним действия. И вот можно было б при попытке редактирования проверять соответсвующие флаги, но как-то не очень мне нравится этот подход. Думаю правильнее будет выделить удаленный и архивный инциденты в отдельные агрегаты типа DeletedIncident и ArchivedIncident, дабы и в будущем упростить реализацию правил только для них. Но тогда не понятно по поводу репозитория, который теперь должен возвращать и Incident и DeletedIncident и ArchivedIncident, что тоже не правильно. Как это лучше разрешить, в какую сторону смотреть?
тож задавался таким вопросом
наверное ответ в том, что раз методы у объектов разные - юзкейсы тоже будут разные. Тогда и репозитории будут разные и методы в апи будут разные. Короче всё отдельно будет.
Тут прикол в том, куда if засунуть по сути.
Можно на клиент (ведь клиент знает с каким типом объекта работает), можно на шлюз какой, если у тебя он есть перед приложением.
Мне кажется, что чем раньше это иф в юзкейсе будет, тем лучше. Т.е. в идеале на клиенте этот иф держать. Или если у тебя бек управляет фронтом (hateoas вот это вот всё) - при генерации экшенов для фронта
но это неточно, сам я такого не делал 🤔