Задать вопрос
Ответы пользователя по тегу SQLAlchemy
  • В каком слое DTO объект преобразовывать в словарь перед сохранением в БД?

    @constantinesx
    Формировать в сервисном слое ORM модель и передавать ее в репо - плохая идея:
    1. Часто приводится аргумент «а вот захочешь ты сменить реляционную БД на nosql и тогда сервисный слой придется переписывать». И хоть это и редкий кейс, тем не менее стоит держать его в голове. Избегайте протекание логики работы с БД в сервисный слой.
    2. Само название DTO содержит цель этой сущности - гонять данные между функциями/слоями. Модель ORM это более сложный и более специфичный объект.

    Насчет передачи словаря в репо из сервиса тоже есть сомнения:
    1. DTO обеспечивает валидацию данных, автодополнение кода, типизацию и еще много что на самом деле - можно писать свои методы, реализующие необходимую логику. Словари - нет.
    2. Если вы уже описали DTO, то немного странно использовать его только для передачи данных из роута в сервис. Почему бы тогда не использовать его и для передачи из сервиса в репо?

    Резюмируя - передавайте данные между слоями в DTO, в обоих направлениях.
    Ответ написан
    Комментировать