Как настроить транзактор в doobie? - PullRequest
1 голос
/ 24 октября 2019

Недавно я начал изучать Дуби, но я не мог создать транзакцию Хикари без ошибок. Я использую mysql, Intellij-Idea.

Это мой файл build.sbt

name := "doobie"
version := "0.1"
//scalaVersion := "2.13.1"
scalacOptions += "-Ypartial-unification" // 2.11.9+
libraryDependencies ++= {
  lazy val doobieVersion = "0.8.4"
  Seq(
    "org.tpolecat" %% "doobie-core"      % doobieVersion,
    "org.tpolecat"    %% "doobie-h2"            % doobieVersion,
    "org.tpolecat"    %% "doobie-hikari"        % doobieVersion,
    "org.tpolecat"    %% "doobie-quill"         % doobieVersion,
    "org.tpolecat"    %% "doobie-specs2"        % doobieVersion,
    "org.tpolecat"    %% "doobie-scalatest"     % doobieVersion   % "test",
    "mysql"           % "mysql-connector-java"  % "8.0.17",
    "org.slf4j"       % "slf4j-api"             % "1.7.5",
    "ch.qos.logback"  % "logback-classic"       % "1.0.9"
  )
}

resolvers ++= Seq(
  "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/"
)

Это мой файл Connection.scala

import cats.effect.IO
import com.zaxxer.hikari.{HikariConfig, HikariDataSource}
import doobie.hikari.HikariTransactor

trait Connection {

  val config = new HikariConfig()
  config.setJdbcUrl("jdbc:mysql://localhost:quill_demo")
  config.setUsername("admin")
  config.setPassword("password")
  config.setMaximumPoolSize(5)

  val transactor: IO[HikariTransactor[IO]] =
    IO.pure(HikariTransactor.apply[IO](new HikariDataSource(config)))

}

ПроблемаВ указанном выше файле IO.pure(HikariTransactor.apply[IO](new HikariDataSource(config))) оператор выдает ошибку. Здесь 3 из последних закрытых фигурных скобок дают 3 ошибки, как показано ниже.

No implicit arguments of type: ContextShift[IO]
Unspecified value parameters: connectEC: ExecutionContext, transactEC: ExecutionContext
No implicits found for parameter evidence$2: ContextShift[IO]

Все, что я хочу знать, как это сделать правильно.

Ответы [ 2 ]

0 голосов
/ 29 октября 2019

После того, как я изменил версии зависимостей следующим образом, я мог бы решить все ошибки.

name := "doobie"
version := "0.1"
//scalaVersion := "2.13.1"
scalacOptions += "-Ypartial-unification"
libraryDependencies ++= {
  lazy val doobieVersion = "0.5.4"
  Seq(
    "org.tpolecat" %% "doobie-core"      % doobieVersion,
    "org.tpolecat"    %% "doobie-h2"            % doobieVersion,
    "org.tpolecat"    %% "doobie-hikari"        % doobieVersion,
    "org.tpolecat"    %% "doobie-quill"         % doobieVersion,
    "org.tpolecat"    %% "doobie-specs2"        % doobieVersion,
    "org.tpolecat"    %% "doobie-scalatest"     % doobieVersion   % "test",
    "mysql"           % "mysql-connector-java"  % "5.1.34",
    "org.slf4j"       % "slf4j-api"             % "1.7.5",
    "ch.qos.logback"  % "logback-classic"       % "1.0.9"
  )
}

resolvers ++= Seq(
  "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/"
)
0 голосов
/ 24 октября 2019

Попробуйте добавить следующий импорт и неявный

import scala.concurrent.ExecutionContext

implicit val cs = IO.contextShift(ExecutionContext.global)
...