Q: ZIOで使用する方法は?
A: ZIOで使用する場合、zio-interop-cats
を使用します。
libraryDependencies += "dev.zio" %% "zio-interop-cats" % "<latest-version>"
以下は、ZIOを使用してldbcを利用するためのサンプルコードです。
import java.util.UUID
import cats.effect.std.UUIDGen
import fs2.hashing.Hashing
import fs2.io.net.Network
import zio.*
import zio.interop.catz.*
object Main extends ZIOAppDefault:
given cats.effect.std.Console[Task] = cats.effect.std.Console.make[Task]
given UUIDGen[Task] with
override def randomUUID: Task[UUID] = ZIO.attempt(UUID.randomUUID())
given Hashing[Task] = Hashing.forSync[Task]
given Network[Task] = Network.forAsync[Task]
private def datasource = MySQLDataSource
.build[Task]("127.0.0.1", 13306, "ldbc")
.setPassword("password")
.setDatabase("world")
.setSSL(SSL.Trusted)
private val connector = Connector.fromDataSource(datasource)
override def run =
sql"SELECT Name FROM city"
.query[String]
.to[List]
.readOnly(connector)
.flatMap { cities =>
Console.printLine(cities)
}
パフォーマンス
Cats EffectからZIO変換によるパフォーマンス結果は以下のようになります。