ScalikeJDBC, надо как-то пробрасывать сессию от него ко всем роутам и сервисам где она нужна будет. Структура примерно такая: App -> Routes -> SpecificRoute -> SpecificService, код работы с базой в SpecificService там я прикрутил Reader[DBSession, T] из cats. Но пул сессий создается в App, дальше через self-type и подобие cake pattern передается в Routes, оттуда в конкретный роут и там уже делается reader.run(session). И вот у меня возник вопрос: а какой смысл вообще в ридере если сессия и так будет в скоупе роута или сервиса, и можно вместо def list: Reader[DBSession, Something] просто сделать def list(implicit session: DBSession): Something? Ну да, каждый def теперь будет с implicit, но Reader тоже везде надо писать. Ну и короче я не понимаю как... передвать сессию более явно что-ли? Как вообще лучше организзовать архитектуру с Reader? Есть у кого опыт?
лучше всего организовывать архитектуру с ридер через F[_]
Обсуждают сегодня