Doobie通过ConnectionIO程序列表进行事务处理

时间:2018-07-29 13:45:02

标签: scala scala-cats doobie

比方说,我有一个Doobie程序列表(全部带有Unit类型参数,fwiw):

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

有什么办法可以在一次交易中运行它们?理解在这里行不通,因为我只知道运行时程序列表的确切组成。基本上,我想我需要将它们折叠在一起。

我想这个问题通常适用于Cats中的Free Monad,因此我也将Cats标记为。谢谢。

1 个答案:

答案 0 :(得分:5)

您可以使用猫中的.sequence来做到这一点:

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

...

val res = progList.sequence // ConnectionIO[List[Unit]]