И причем здесь доктрина?

17 ответов

4 просмотра

ну сущность, она же в доменном слое она ведь может юзать нижележащие сервисы какие-нибудь, верно? мы такие рич модел придерживаемся, но не можем в методе сущности дернуть какой-то сервис, мы же в доктриновскую сущность не можем инжектить

еще пример, более конкретный у сущности (которая корневой агрегат) есть статусы, есть определенное действие, которое переводит в след статус, при условии что некоторые ее агрегаты в таком то состоянии.. как проверять эти агрегаты? передавать в метод репозитории, чтоб корневой агрегат достал эти агрегаты и проверил? там нет доктриновских one2many, у агрегата просто есть айдишник его агрегата

𝔏𝔦𝔩𝔦𝔱𝔥- Автор вопроса

в сущность кидать логику плохая идея, вся работа с логикой и сервисами возлогают на контроллеры

это доменная логика, уже точно не в контроллеры)

𝔏𝔦𝔩𝔦𝔱𝔥- Автор вопроса

ну на те же сервисы, события, куда хош

тогда будет не rich.. понятное дело, не получится все доменную логику сосредоточить в агрегате а зачем тогда rich model вообще нужен? ну лично в моем случае

𝔏𝔦𝔩𝔦𝔱𝔥- Автор вопроса

если ты начал пилить в рич, то у тебя все должно быть в рич, нужно как-то придерживаться единого стиля, имхо

rich модел это не только состояние (как в анемик), но еще и поведение в том же месте где и состояние, за счет этого контроль над состоянием не размазан по всему приложению ровным слоем (если все владеют состоянием, то им не владеет никто), а лежит мирно в одном месте.

ну вот сущность имеет состояние, вот ее поведение пытаюсь запихнуть туда же) вроде правильно корневому агрегату нужно проверить свои агрегаты? при условии что агрегаты у нас доктриновские сущности, связи типа many2one и пр. - нет, агрегат имеет ссылку на свой корень корневой агрегат должен вытащить свои агрегаты, с помощью реп

Зачем ему проверять свои агрегаты? Они сами могут проверить себя. Инкапсуляция же.

ну допустим надо, никак по другому не понять, можно ли корневой агрегат перейти в след состоянии или в данном случае с проектированием что-то не то?

А, ну это проверка консистентности между агрегатами. Проверять тоже не надо. Верхний агрегат просто не позволит сделать так, что внутренние будут в разногласии. Тогда и проверять не придется

спасибо) навело на правильные мысли

Дмитрий Ткаченко
А, ну это проверка консистентности между агрегатам...

только тут надо учитывать, что до внутренних агрегатов извне доступа вообще ни у кого нет, иначе получится ситуация что верхний агрегат не может давать никаких гарантий насчет консистентности состояний

в этом как раз заключалась проблема 😅 я как бы в курсе, что все действия - через корневой агрегат, но в какой-то момент протупил

сорри если надоедаю, но еще такой вопрос) и сорян что привожу пример с доками, но так думаю нагляднее будет есть документы, счета-фактуры и накладные, а есть такая штука как упд (эдакий контейнер для накладных и счетов-фактур, может включать в себя несколько и тех и других) получается, УПД - корневой агрегат, а счета-фактуры и накладные - его агрегаты прежде чем смогу совершить действие над корневым агрегатом, я должен перевести все его агрегаты в определенное состояние, делать это буду через корневой агрегат, тут все ок, просто/понятно НО счета-фактуры и накладные могут быть самостоятельными, хочется иметь возможность их юзать в т.ч. отдельно это разные контексты? та же счет-фактура у меня будет в двух видах, как корневой агрегат и как обычный? грубо говоря, в проекте это будет 2 разных сущности одного и того же, просто в зависимости от задачи юзаем то что нам надо? но ведь сущности идентичные, только лишь использование разное

А упд не может быть просто уникальным номером, который объединит эти доки в случае когда надо?

Похожие вопросы

Обсуждают сегодня

Сonst magicTgHTML = (text, entities) => { let processedText = text; let offsetShift = 0; entities.forEach(entity => { const { offset, length, type, url, ...
Андрей
1
В смысле более затратная? Общая стоимость владения лошадью меньше, чем автомобиля. В среднем.
Sergej R
10
Кстати, раз про скачивание файлов разговор зашел) Сделал бота для себя (транскрибирующего и суммаризирующего встречи) но не ожидал что за 2 месяца 10к пользователей набежит😅...
Andrey Obolenskiy
8
t.me/<username> и tg://user?id=<id> отваливаются по понятным причинам
Denis 🐍|👑 | darling! 🥰
7
Вы когда из вики.... копировали, не обратили внимание на года(ы)? 😉 ==== если до 1917 года в Москве было около 15 000 легковых извозчиков, то к 1920 году их осталось 5 000, а ...
Igor Mitin
4
коллеги привет. уже второй день бьемся об заклад с одной ошибкой, может вы сталкивались с таки странным поведением? есть тестовый сервер, на который паблишим релизную версию W...
Magzhan
11
На счёт замены разрабов нейронами: Вряд-ли заказчик сможет нормально пояснить нейросети, чё он хочет. Они то человеку нормально пояснить не могут, не то что нейросети. Так что...
Alex Kom
1
Что я могу сказать? Погуглите получше - чтобы узнать: 1. Что будет стоить содержание машины 2. Что будет стоить содержании лошади. P.S. Моя мысль о том, повторюсь еще раз,...
Igor Mitin
1
Слушайте, а при создании навигации на Tailor рили нельзя определять активный пункт навигации, как в Static Pages?
Pavel Lautsevich
11
Господа, а как такое в миграцию засунуть?
Денис Александрович
12
Карта сайта