Транзакция 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]]