Параллельный запуск запросов в Doobie - PullRequest
0 голосов
/ 13 июня 2018

Можно ли выполнять несколько запросов параллельно, используя 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}

Я что-то упускаю из виду или пытаюсь сделать что-то, что нельзя сделать?Спасибо

...