Здравствуйте, takTak, Вы писали:
T>если смотреть исторически, то агрегат в ддд вообще никак не связан с какой-то там базой данных, агрегат отвечает только за поведение и валидацию тех сущностей, которые находятся под его попечительством: допустим у тебя есть заказ, цена и условия которого могут измениться в будущем, но только при наличии каких-то условий, тогда пользователь, условно говоря, отправляет команду "изменить заказ с атрибутами: номер заказа , наименование операции "потребовать 25% скидки", пользовательский номер",тогда command handler переправляет агрегату событие с упомянутыми атрибутами, агрегат берёт номер заказа, загружает себя (вовсе необязательно из реляционной базы данных) из стримового потока, производит или не производит операцию, сохраняет себя в стримовом потоке, отправляет сообщение "я изменился, новая цена : хх" , и вот уже event handler, который подписан на это событие, вытаскивает аргументы и асинхронно сохраняет информацию в реляционной или ещё какой-то там базе данных, к которой обращается клиентская часть
Это предполагает наличие изменяемой сущности "заказ". Как мы уже неоднократно обсудили в этом топике, в рамках нашей задачи такой штуки нет.
T>а вот не надо упрощать и чего-то придумывать, тогда мы вообще никогда не разберёмся, есть "карта покупок", ну так пусть и будет, T>теперь опять к нашим баранам: когда пользователь залогинился и увидел список товаров, то он увидел их с ценой со скидками и надбавками или эти цены появляются только тогда, когда покупатель добавил их к "карзине для покупок" ?
Пользователь сразу видит список товаров с их ценами. Скидки/надбавки ему не видны — это закрытые подробности. Всё, что он видит — конкретную сумму. T>>>нужны ли для калькуляции какие-то вызовы в базу данных или я могу загрузить все интересующие меня аргументы при создании агрегата? T>если делать по кошерному, я не имею права из агрегата тянуть какие-то вещи из левой для меня базы, все эти вещи либо должны быть мне доставлены либо должны быть частью моей предметной области, тогда я их могу либо у других агрегатов запросить, либо как-то скомпоновать с помощью какого-то domain service
Ну, вот делайте по кошерному. Математику того, как формируется цена, я объяснил. Вот и расскажите, кто, откуда, и что будет тянуть, и как он это будет считать.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.