diff --git a/build.sbt b/build.sbt index eae453ea..edf50dcb 100644 --- a/build.sbt +++ b/build.sbt @@ -53,7 +53,7 @@ lazy val root = (project in file(".") settings commonSettings settings (publish / skip := true) settings (alias) - aggregate (skafka, `play-json`, metrics, `metrics-prometheus-v1`, tests)) + aggregate (skafka, `play-json`, metrics, `metrics-prometheus-v1`, tests, circe)) lazy val skafka = (project in file("skafka") settings commonSettings @@ -90,6 +90,12 @@ lazy val metrics = (project in file("modules/metrics") dependsOn skafka settings (libraryDependencies ++= Seq(Smetrics.`smetrics-prometheus`))) +lazy val circe = (project in file("modules/circe") + settings (name := "skafka-circe") + settings commonSettings + dependsOn skafka + settings (libraryDependencies ++= Seq(Dependencies.circe))) + lazy val `metrics-prometheus-v1` = (project in file("modules/metrics_prometheus_v1") settings commonSettings dependsOn skafka diff --git a/modules/circe/src/main/scala/com/evolutiongaming/skafka/circe/package.scala b/modules/circe/src/main/scala/com/evolutiongaming/skafka/circe/package.scala new file mode 100644 index 00000000..eed61be3 --- /dev/null +++ b/modules/circe/src/main/scala/com/evolutiongaming/skafka/circe/package.scala @@ -0,0 +1,11 @@ +package com.evolutiongaming.skafka + +import io.circe.Encoder +import com.evolutiongaming.skafka.ToBytes +import com.evolutiongaming.catshelper.FromTry +import cats.syntax.contravariant.toContravariantOps +import io.circe.syntax.EncoderOps + +package object circe { + implicit def toBytesFromEncoder[F[_]: FromTry, A: Encoder]: ToBytes[F, A] = ToBytes.stringToBytes[F].contramap(_.asJson.noSpaces) +} diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 873c4137..659cc464 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -12,6 +12,7 @@ object Dependencies { val scalatest = "org.scalatest" %% "scalatest" % "3.2.19" val `kind-projector` = "org.typelevel" % "kind-projector" % "0.13.3" val discipline = "org.typelevel" %% "discipline-scalatest" % "2.3.0" + val circe = "io.circe" %% "circe-core" % "0.14.14" object Kafka { private val version = "3.4.0"