TGViewer
Big Flatmappa Big Flatmappa @bigflatmappa · 324 subscribers
Post #7 1.65K
До сих пор считаю doobie самой хорошей библиотекой для работы с JDBC, при всех минусах самого протокола. Правда, из её дизайна следует ряд проблем, из-за которых с её помощью довольно сложно сразу начать писать правильный tagless final код для транзакционной бизнес-логики.

Во-первых, для описания действий с базой используется Free-монада ConnectionIO, умеющая довольно многое (весь набор JDBC-операций + инстансы сильных тайпклассов из CE), но не умеющая таскать произвольный контекст, как это умеют ZIO, Env или ReaderT. Кроме того, ConnectionIO вшита в Transactor, выполняющий её интерпретацию в произвольный эффект и управляющий транзакцией.

Во-вторых, достаточно полезная трейсинговая информация о выполнении SQL-запросов может быть передана только в LogHandler - сайд-эффектящий обработчик вида LogEvent => Unit, что при использовании "в лоб" затрудняет идентификацию этих событий в логах.

В-третьих, правильно дополнить транзакционную логику какими-нибудь посторонними (пусть и неоткатываемыми) эффектами в CE2 было непросто, а в CE3 стало очень сложно (возможно, напишу об этом отдельно).

В-четвертых, писать код с конкретной монадой — не наш путь. Особенно, если при попытке решить часть предыдущих проблем вместо ConnectionIO приходится использовать что-то ещё более сложное.

Хочется простого — работать с абстрактным DB-эффектом с поддержкой контекстного логирования и трассировки, ограничивая его способности только необходимыми баундами и алгебрами с бизнес-логикой. Главный вопрос — как?
More from @bigflatmappa
  1. Oct 25, 2021А вот и план по введению forward compatibility. Флаг --scala-target появится уже в 3.1.1!
  2. Oct 21, 2021В Scala 2 никогда не было обратной совместимости между мажорным версиями, а до 2.10 — и ме…
  3. Oct 18, 2021Scala Steward — одна из моих самых любимых утилит в Scala-экосистеме и лучший помощник люб…
  4. Aug 7, 2021Да, в заключение добавлю про Scala 3. Ишшу на добавление кросс-билда trace4cats я завёл ещ…
  5. Aug 7, 2021Вот и закончилась полугодовая эпопея миграции одной библиотеки на Cats Effect 3, а вдогонк…
  6. Jul 13, 2021Хех, покопался в истории чата @tofu_ru — оказывается, мы ещё 2 апреля обсуждали с @odomont…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →