Переписываю рабочий проект по архитектуре ддд (чтобы лучше разбратся) это

апи, у меня есть модуль как отдельный контекст отвечающий за продукты, и для создания продукта требуется передать ему id владельца с другого контекста но в апи приходит uuid этого владельца и получается что нужно в базе по этому uuid найти владельца и при создании продукта вставить ему этот айди. Каким образом мне следуют обратится к другому контексту чтобы найти этого владельца? Либо как я ещё думал лучше создать в модуле этого продукта новый репозиторий который будет отвечать за работу этого владельца, но только в этом модуле (в базе есть только 1 таблица владельца)

10 ответов

13 просмотров

на uuid связь нельзя сделать?

Web-Dev Автор вопроса
𝔏𝔦𝔩𝔦𝔱𝔥
на uuid связь нельзя сделать?

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

Web Dev
нет, проблема в том что база существует уже много ...

uuid же все ровно уже есть, ты же собираешься как-то искать по нему владельца

Web-Dev Автор вопроса
𝔏𝔦𝔩𝔦𝔱𝔥
uuid же все ровно уже есть, ты же собираешься как-...

да, но связь в базе настроена на id вместо uuid

лучше избегать прямых обращений между модулями можно в аппликейшен слое по ююиду найти кастомера через один модуль и другому модулю скормить те данные, что ему нужны но если ты хочешь быть уверенным, что кастомер существует, и чтоб это было в коде, то в модуле где тебе нужен ИД юзера делаешь интерфейс, грубо говоря UserIdProviderInterface::getUserId(Uuid $uuid): UserId; в инфре пилишь адаптер на этот интерфейс, который использует модуль юзеров. Все, теперь модуль продуктов зависит от своего интерфейса, ты в любой момент можешь подсунуть ему другой адаптер (который не лезет в БД, а ходит по хттп например)

Web-Dev Автор вопроса
Volodymyr Melko
лучше избегать прямых обращений между модулями мож...

спасибо за ответ, не совсем понял о интерфейсеб где он дожен находится? Можно ли об этом чуть подробнее?

Web Dev
спасибо за ответ, не совсем понял о интерфейсеб гд...

интерфейс находится в модуле, который хочет обменять ююид на ид кастомера Это его порт. Мол "я не знаю где лежат кастомеры, мне пофигу где вы возьмете информацию, просто дайте мне что-то, что сможет обменять ююид на обычный айдишник" Теперь все свои сервисы, которым нужно поменять ююид на ид в этом модуле могут использовать этот интерфейс

Web-Dev Автор вопроса
Volodymyr Melko
интерфейс находится в модуле, который хочет обменя...

хм, а у меня каждый модуль имеет инфраструктуру а точнее такие каталоги как Application, Domain, Infrastructure. А вы написали о том что инфраструктура не является частью модуля

Web Dev
хм, а у меня каждый модуль имеет инфраструктуру а ...

ну с таким разделением выгядит логично положить адаптер в инфру модуля юзеров. но прикинь ,что вы переходите на микросервисы и ты выносишь этот модуль вообще в другой репо и теперь он деплоится независимо. Тебе нужен новый адаптер все к тому же модулю юзеров, только он будет ходить по хттп. Куда ты положишь этот адаптер, если папочки с модулем юзеров у тебя больше нет в проекте? =)

Web-Dev Автор вопроса
Volodymyr Melko
ну с таким разделением выгядит логично положить ад...

то есть будет выглядеть примерно так? Скрин взял с одной лекции на ютуб

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

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

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Привет!) Кто как юзает переменные в строках?) Чисто ради интереса Вот так: echo "У меня {$bananasAmount} бананов"; Или вот так: echo "У меня ${bananasAmount} бананов";
Виталий
3
разработчик ботов скидывает портфолио, боты которые он уже создал. А вот как узнать что это именно он их создал?
Gosudar
4
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Карта сайта