ADR-002Где должно жить бизнес-правило?
ПринятоКонтекст
Количество в заказе должно быть больше нуля. Правило должно соблюдаться, когда заказы создаются через API — а позже и через импорт файла.
- Решение
- Держать правило в OrderService. Контроллер только принимает HTTP-запрос и возвращает ответ.
- Причина
- Правило живёт в одном месте, одинаково работает для всех точек входа и покрыто unit-тестом.
- Последствие
- Контроллер остаётся тонким. Новая точка входа не требует переписывать правило.
Варианты
AВ контроллере
Плюс: Быстро написать.
Минус: Каждая новая точка входа должна повторять правило.
BВ сервисном слое
Плюс: Одно место, работает для любой точки входа, легко тестировать.
Минус: Ещё один слой.
CТолько в базе данных (CHECK)
Плюс: Плохие данные не сохраняются.
Минус: Трудно вернуть пользователю понятную ошибку.