@Fly3110
web developer

В каком слое должны находиться мапперы в clean architecture?

Я только разбираюсь с dependency injection и clean architecture, поэтому вопрос может быть вообще некорректным :)

Есть 2 сущности.
Назовем их Source и Destination.

Обе в слое домена.

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

Но сейчас, при преобразовании, понадобилось не только переместить значения полей из Source в Destination, но и записать в одно из полей модели Destination значение, которое должно быть получено из еще одной модели (допустим ThirdPartyEntity), которая получается из репозитория, реализация которого находится в слое инфраструктуры, а в слое данных только интерфейс (нужен для use cases).

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

Можно, конечно добавить ThirdPartyEntity как параметр в маппер, а саму модель получать из репозитория там, где маппер вызывается, наверное это будет более правильно.
  • Вопрос задан
  • 31 просмотр
Пригласить эксперта
Ответы на вопрос 1
sarapinit
@sarapinit
Точу водой камень
Поместите маппер в корень композиции, который по определению знает о всех слоях. Зарегистрируйте в IoC контейнере и получайте как зависимость во всех нужных местах
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы