All Downloads are FREE. Search and download functionalities are using the official Maven repository.

play.api.cache.AsyncCacheApi.scala Maven / Gradle / Ivy

/*
 * Copyright (C) from 2022 The Play Framework Contributors , 2011-2021 Lightbend Inc. 
 */

package play.api.cache

import scala.concurrent.duration._
import scala.concurrent.Future
import scala.reflect.ClassTag

import org.apache.pekko.Done

/**
 * The cache API
 */
trait AsyncCacheApi {

  /**
   * Get an instance of [[SyncCacheApi]] to make synchronous calls.
   */
  lazy val sync: SyncCacheApi = new DefaultSyncCacheApi(this)

  /**
   * Set a value into the cache.
   *
   * @param key Item key.
   * @param value Item value.
   * @param expiration Expiration time.
   */
  def set(key: String, value: Any, expiration: Duration = Duration.Inf): Future[Done]

  /**
   * Remove a value from the cache
   */
  def remove(key: String): Future[Done]

  /**
   * Retrieve a value from the cache, or set it from a default function.
   *
   * @param key Item key.
   * @param expiration expiration period in seconds.
   * @param orElse The default function to invoke if the value was not found in cache.
   */
  def getOrElseUpdate[A: ClassTag](key: String, expiration: Duration = Duration.Inf)(orElse: => Future[A]): Future[A]

  /**
   * Retrieve a value from the cache for the given type
   *
   * @param key Item key.
   * @return result as a future of Option[T]
   */
  def get[T: ClassTag](key: String): Future[Option[T]]

  /**
   * Removes all values from the cache. This may be useful as an admin user operation if it is supported by your cache.
   *
   * @throws UnsupportedOperationException if this cache implementation does not support removing all values.
   * @return a Future[Done], which is completed with either a Done or an exception if the clear did not work.
   */
  def removeAll(): Future[Done]
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy