Можно ли выполнять несколько запросов параллельно, используя Doobie?
У меня есть следующие (псевдо) запросы:
def prepareForQuery(input: String): ConnectionIO[Unit] = ???
val gettAllResults: ConnectionIO[List[(String, BigDecimal)]] = ???
def program(input : String) : ConnectionIO[List[(String, BigDecimal)]] = for{
_ <- prepareForQuery(input)
r <- gettAllResults
} yield r
Я попробовал следующее:
import doobie._
import doobie.implicits._
import cats.implicits._
val xa = Transactor.fromDataSource[IO](myDataSource)
val result = (program(i1),program(i2)).parMapN{case (a,b) => a ++ b}
val rs = result.transact(xa).unsafeRunSync
Однако экземпляр * NonEmptyParallel не найден для ConnectionIO
.
Ошибка: (107, 54) не удалось найти неявное значение для параметра p: cats.NonEmptyParallel [doobie.ConnectionIO, F] val result = (program (i1), program (i2)) .parMapN {case (a, b) => a ++ b}
Я что-то упускаю из виду или пытаюсь сделать что-то, что нельзя сделать?Спасибо