Тут как с любыми архитектурными изяществами, репозиторий не нужен ровно до тех пор, когда он становится очень нужен из-за того, что требования изменились.
а я поймал себя на том, что умный репозиторий (который что-то кеширует по ходу дела) только добавляет неточностей и вольностей
особенно, если в проекте нет каких-то строгих стайлгайдов и каждый дро… пишет как он хочет
потом появляются такие кейсы:
- что, если мне вот тут эти данные нормально из кеша взять, а в случае их отсутствия загрузить
- что, если вот здесь нужны только свежие данные
- вот здесь мне нужно либо кеш, либо ошибку получить
и тут несколько вариантов:
а) простые методы репозитория + логика, которая сама их как нужно скомбинирует
б) по методу на каждый случай в репозиторий
в) несколько разных репозиториев на сущность (самый плохой вариант)
г) передавать флаги в метод, а-ля «isCacheAllowed»