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

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

10 ответов

9 просмотров

на 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
ну с таким разделением выгядит логично положить ад...

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

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

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

Подскажите, а есть vault lite или ченить такое?) А то нужен вольт для похода в вольт, но весит он ~500 мб) как-то многовато для парочки запросов ))
Alexandr Orloff
17
Всем привет, есть небольшая проблема Есть такой скрипт document.addEventListener('DOMContentLoaded', function () { const sliderTabs = document.querySelectorAll('.s...
A da
8
@go1337 @dblackCat Привет. Все ещё дрочусь с fastpanel. Добавил второй домен который должен смотреть в рут того же сайта, но так как это просто домен, а не сайт, я не могу ему...
Ross 🦴
9
До речі, в ево нема можливості чи якого розширення щоб з адмінки з телефона зайти і терміново щось в верстці поправити?
Женя
7
кто-нибудь пользуется тайм-трекерами во время работы? так много разных нагуглил, может есть что-то популярное
Lencore
8
Пацаны. Я разрабатываю софт для инвайтинга на телетон, и столкнулся с такой проблемой, в один из чатов не могу приглашать никого, не дает добавлять, в то же время через официа...
Kernel Panic
11
Скажите, а кому нужен Currency как отдельный плагин вместо полноценного ecommerce в OctoberCMS? Кто-то использует его уже или планирует в будущем? Может я что-то не понимаю?
Igor
13
Розмовами про Рево мені нагадали часи, коли шаблони правилися прямо в адмінці. Хто в курсі, чому відійшли від цієї практики, так блейд не працює? Доволі зручно ж було (інколи)
Женя
3
Всем добрый вечер, Рад оказаться в кругу единомышленников. Начинаю погружаться в мир .net веба. Зовут Ерасыл 🖖 У меня назрел вопрос: Какой процент проектов, прошедшие через в...
Ерасыл
6
Чому? Да тому що без GiT не уявляю нормального проекта а коли код в базі то то так собі
Dmytro Lukianenko
3
Карта сайта