Size: a a a

2021 June 02

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

WD

Web Dev in symfony
да, но связь в базе настроена на id вместо uuid
источник

✨Basic_Instinct✨ in symfony
у тебя же сущность перед глазами))
источник

✨Basic_Instinct✨ in symfony
есть uuid, есть entity, ну сделай менитуван на его
источник

✨Basic_Instinct✨ in symfony
или uuid не uuid ? ))
источник

WD

Web Dev in symfony
ещё раз, база уже существующая, если я изменю эти поля то нужно будет изменять и все записи которые там содержатся
источник

✨Basic_Instinct✨ in symfony
сгородить костыль проще изменить записи?
источник

VM

Volodymyr Melko in symfony
лучше избегать прямых обращений между модулями
можно в аппликейшен слое по ююиду найти кастомера через один модуль и другому модулю скормить те данные, что ему нужны

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

в инфре пилишь адаптер на этот интерфейс, который использует модуль юзеров.
Все, теперь модуль продуктов зависит от своего интерфейса, ты в любой момент можешь подсунуть ему другой адаптер (который не лезет в БД, а ходит по хттп например)
источник

VM

Volodymyr Melko in symfony
еще стоит почитать о Anti Corruption Layer когда мы говорим о взаимодействии между модулями
источник

в

вαғғσмεттι in symfony
коррупция зло
источник

WD

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

VM

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

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

VM

Volodymyr Melko in symfony
к порту нужен адаптер, реализация интерфейса
адаптеры обычно лежат в инфраструктуре, тоесть не являются частью какого либо модуля
источник

WD

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

VM

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

WD

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

VM

Volodymyr Melko in symfony
ну можно и так... вообще ддд не о папочках =)
источник

DT

Dmitriy Tkachenko in symfony
Я кладу адаптеры (трансформеры) в папку Api, потому что Api тоже в каком-то смысле инфраструктура
источник

VM

Volodymyr Melko in symfony
адаптеры разные бывают... странно ложиться адаптеры к БД\ФС в папочку АПИ =)
источник

DT

Dmitriy Tkachenko in symfony
логично же что это про адаптеры приложения в апи)
источник