【发布时间】:2018-02-19 00:35:14
【问题描述】:
我有一个ConnectionIO[Option[Int]] 并映射到Option 以产生一个ConnectionIO[Option[String]] 并查询Some[Int] 否则保留Nones. I was able to do this with aforcomprehension and amatch`:
def findWidgetByOwner(name: String): ConnectionIO[Option[String]] = for {
opt <- sql"SELECT owner_id FROM owners WHERE name = $name".query[Int].option
widget <- opt match {
case None => None.pure[ConnectionIO]
case Some(id) => sql"SELECT widget_name FROM widgets WHERE owner_id = $id".query[String].option
}
} yield widget
我知道我被 ConnectionIO 容器绊倒了,但我找不到将 ConnectionIO[Option[Int]] 转换为 ConnectionIO[Option[String]] 的更简洁的映射方法。
【问题讨论】:
标签: scala free-monad doobie