Транзакция Doobie по списку программ ConnectionIO

Допустим, у меня есть список программ Doobie (все с Unit параметры типа, fwiw):

val progList: List[ConnectionIO[Unit]] = prog1 :: prog2 :: ... :: Nil

Есть ли способ, которым я могу запустить их в одной транзакции? Понимание здесь не сработает, потому что я знаю точный состав списка программ только во время выполнения. По сути, я полагаю, мне нужно сложить их вместе.

Я предполагаю, что этот вопрос относится к Free Monads in Cats в целом, поэтому я тоже буду отмечать Cats. Благодарю.

1 ответ

Решение

Вы можете сделать это с .sequence от кошек:

import doobie.implicits._
import cats.implicits._

...

val res = progList.sequence // ConnectionIO[List[Unit]]
Другие вопросы по тегам