Сомнительные советы сверху.
1) Пришел запрос в роутер, делаем ТОЛЬКО базовую валидацию на соответствие полей и их типов, мапим в DTO.
2) DTO передаем в сервис, там делаем бизнес валидацию при необходимости. Мапим DTO в модель, НЕ зависящую от реализации (Postgres, Mysql и тд.).
3) Передаем модель в репо и мапим в ORM-мную модель, делаем все что нужно и в сервис отдаем обычную НЕ ORM-мную модель.
4) В сервисе мапим модель в DTO и отдаем в роутер.
Почему создаем отдельную модель для передачи в репозиторий, а не используем DTO либо ORM-мную модель?
- В DTO может быть много лишних полей, которые не используются в модели, репозиторий не должен ничего знать о них.
- База это адаптер, она должна быть легко сменяема и не влиять на слой сервиса. Создавая промежуточную модель, вместо использования ORM-мной мы изолируем сервис от конкрентной реализации репозитория и базы в целом.