Doobie 处理一系列 ConnectionIO 程序
Doobie transact over a list of ConnectionIO programs
假设我有一个 Doobie 程序列表(全部带有 Unit
类型参数,fwiw):
val progList: List[ConnectionIO[Unit]] = prog1 :: prog2 :: ... :: Nil
有什么办法可以在一次交易中 运行 他们吗? for-comprehension在这里是行不通的,因为我只知道运行时间的程序列表的精确组成。本质上,我想我需要将它们折叠在一起,我想。
我想这个问题一般适用于 Cats 中的 Free Monads,所以我也会标记 Cats。谢谢
你可以用来自猫的 .sequence
做到这一点:
import doobie.implicits._
import cats.implicits._
...
val res = progList.sequence // ConnectionIO[List[Unit]]
假设我有一个 Doobie 程序列表(全部带有 Unit
类型参数,fwiw):
val progList: List[ConnectionIO[Unit]] = prog1 :: prog2 :: ... :: Nil
有什么办法可以在一次交易中 运行 他们吗? for-comprehension在这里是行不通的,因为我只知道运行时间的程序列表的精确组成。本质上,我想我需要将它们折叠在一起,我想。
我想这个问题一般适用于 Cats 中的 Free Monads,所以我也会标记 Cats。谢谢
你可以用来自猫的 .sequence
做到这一点:
import doobie.implicits._
import cats.implicits._
...
val res = progList.sequence // ConnectionIO[List[Unit]]