diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 7c088d2..daff12c 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -3,8 +3,8 @@ import sbt._ object Dependencies { val scalatest = "org.scalatest" %% "scalatest" % "3.2.3" - val `cats-helper` = "com.evolutiongaming" %% "cats-helper" % "2.8.0" - val smetrics = "com.evolutiongaming" %% "smetrics" % "0.3.6" + val `cats-helper` = "com.evolutiongaming" %% "cats-helper" % "2.11.0" + val smetrics = "com.evolutiongaming" %% "smetrics" % "0.4.2" val `kind-projector` = "org.typelevel" % "kind-projector" % "0.13.2" val betterMonadicFor = "com.olegpy" %% "better-monadic-for" % "0.3.1" diff --git a/src/main/scala/com/evolution/scache/Cache.scala b/src/main/scala/com/evolution/scache/Cache.scala index 59600f3..a7fc3b7 100644 --- a/src/main/scala/com/evolution/scache/Cache.scala +++ b/src/main/scala/com/evolution/scache/Cache.scala @@ -5,8 +5,8 @@ import cats.syntax.all._ import cats.kernel.{CommutativeMonoid, Hash, Monoid} import cats.{Functor, Monad, MonadThrow, Parallel, ~>} import com.evolutiongaming.catshelper.CatsHelper._ -import com.evolutiongaming.catshelper.Runtime -import com.evolutiongaming.smetrics.MeasureDuration +import com.evolutiongaming.catshelper.{MeasureDuration, Runtime} +import com.evolutiongaming.smetrics import scala.util.control.NoStackTrace @@ -638,13 +638,24 @@ object Cache { implicit class CacheOps[F[_], K, V](val self: Cache[F, K, V]) extends AnyVal { + @deprecated("use `withMetrics1` instead", "3.7.1") def withMetrics( metrics: CacheMetrics[F])(implicit F: Concurrent[F], timer: Timer[F], + measureDuration: smetrics.MeasureDuration[F] + ): Resource[F, Cache[F, K, V]] = { + implicit val md: MeasureDuration[F] = measureDuration.toCatsHelper + withMetrics1(metrics) + } + + def withMetrics1( + metrics: CacheMetrics[F])(implicit + F: Concurrent[F], + temporal: Timer[F], measureDuration: MeasureDuration[F] ): Resource[F, Cache[F, K, V]] = { - CacheMetered(self, metrics) + CacheMetered.apply1(self, metrics) } def mapK[G[_]](fg: F ~> G, gf: G ~> F)(implicit F: Functor[F]): Cache[G, K, V] = { diff --git a/src/main/scala/com/evolution/scache/CacheMetered.scala b/src/main/scala/com/evolution/scache/CacheMetered.scala index 3edf1a3..68d7c00 100644 --- a/src/main/scala/com/evolution/scache/CacheMetered.scala +++ b/src/main/scala/com/evolution/scache/CacheMetered.scala @@ -3,14 +3,24 @@ package com.evolution.scache import cats.effect.{Concurrent, Resource, Timer} import cats.kernel.CommutativeMonoid import cats.syntax.all._ -import com.evolutiongaming.catshelper.Schedule -import com.evolutiongaming.smetrics.MeasureDuration +import com.evolutiongaming.catshelper.{MeasureDuration, Schedule} +import com.evolutiongaming.smetrics import scala.concurrent.duration._ object CacheMetered { - def apply[F[_]: MeasureDuration: Concurrent: Timer, K, V]( + @deprecated("Use `apply1` instead", "3.7.1") + def apply[F[_]: smetrics.MeasureDuration: Concurrent: Timer, K, V]( + cache: Cache[F, K, V], + metrics: CacheMetrics[F], + interval: FiniteDuration = 1.minute + ): Resource[F, Cache[F, K, V]] = { + implicit val md: MeasureDuration[F] = smetrics.MeasureDuration[F].toCatsHelper + apply1(cache, metrics, interval) + } + + def apply1[F[_]: MeasureDuration: Concurrent: Timer, K, V]( cache: Cache[F, K, V], metrics: CacheMetrics[F], interval: FiniteDuration = 1.minute diff --git a/src/test/scala/com/evolution/scache/CacheSpec.scala b/src/test/scala/com/evolution/scache/CacheSpec.scala index 3a3c386..6d5bdbb 100644 --- a/src/test/scala/com/evolution/scache/CacheSpec.scala +++ b/src/test/scala/com/evolution/scache/CacheSpec.scala @@ -30,7 +30,7 @@ class CacheSpec extends AsyncFunSuite with Matchers { for { cache <- cache0 metrics <- CacheMetricsProbe.of.toResource - cache <- cache.withMetrics(metrics) + cache <- cache.withMetrics1(metrics) cache <- cache.withFence } yield (cache, metrics) diff --git a/src/test/scala/com/evolution/scache/IOSuite.scala b/src/test/scala/com/evolution/scache/IOSuite.scala index 0858c43..3541391 100644 --- a/src/test/scala/com/evolution/scache/IOSuite.scala +++ b/src/test/scala/com/evolution/scache/IOSuite.scala @@ -2,7 +2,7 @@ package com.evolution.scache import cats.Parallel import cats.effect.{Clock, Concurrent, ContextShift, IO, Timer} -import com.evolutiongaming.smetrics.MeasureDuration +import com.evolutiongaming.catshelper.MeasureDuration import org.scalactic.source.Position import org.scalatest.Succeeded import org.scalatest.enablers.Retrying