diff --git a/modules/core/shared/src/main/scala/scalacache/Entry.scala b/modules/core/shared/src/main/scala/scalacache/Entry.scala index 0ad4315e..f153872b 100644 --- a/modules/core/shared/src/main/scala/scalacache/Entry.scala +++ b/modules/core/shared/src/main/scala/scalacache/Entry.scala @@ -1,11 +1,11 @@ package scalacache -import java.time.{Instant} +import java.time.Instant import cats.effect.Clock import java.util.concurrent.TimeUnit import cats.implicits._ import language.higherKinds -import cats.Functor +import cats.Applicative /** * A cache entry with an optional expiry time @@ -15,6 +15,10 @@ case class Entry[F[_], +A](value: A, expiresAt: Option[Instant]) { /** * Has the entry expired yet? */ - def isExpired(implicit clock: Clock[F], functor: Functor[F]): F[Boolean] = - clock.monotonic(TimeUnit.MILLISECONDS).map(Instant.ofEpochMilli(_)).map(now => expiresAt.exists(_.isBefore(now))) + def isExpired(implicit clock: Clock[F], applicative: Applicative[F]): F[Boolean] = + expiresAt + .traverse { ttl => + clock.monotonic(TimeUnit.MILLISECONDS).map(Instant.ofEpochMilli(_)).map(ttl.isBefore(_)) + } + .map(_.contains(true)) }