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

me.archdev.foundationdb.algebra.GetAlgebra.scala Maven / Gradle / Ivy

The newest version!
package me.archdev.foundationdb.algebra

import com.apple.foundationdb.StreamingMode
import me.archdev.foundationdb.namespaces.Subspace
import me.archdev.foundationdb.serializers.Tupler
import me.archdev.foundationdb.utils.KeyValue

import scala.language.higherKinds

trait GetAlgebra[F[_]] {

  def get[K: Tupler, V: Tupler](key: K)(implicit s: Subspace = Subspace()): F[Option[V]]

  def watch[K: Tupler](key: K)(implicit s: Subspace = Subspace()): F[Unit]

  def getRange[K: Tupler, V: Tupler](range: (K, K))(implicit s: Subspace = Subspace()): F[Seq[KeyValue[K, V]]]

  def getRangeWithLimit[K: Tupler, V: Tupler](range: (K, K), limit: Int)(
      implicit s: Subspace = Subspace()
  ): F[Seq[KeyValue[K, V]]]

  def getRangeWithLimitReversed[K: Tupler, V: Tupler](range: (K, K), limit: Int)(
      implicit s: Subspace = Subspace()
  ): F[Seq[KeyValue[K, V]]]

  def getRangeStream[K: Tupler, V: Tupler](range: (K, K), limit: Int, reverse: Boolean, streamingMode: StreamingMode)(
      implicit s: Subspace = Subspace()
  ): F[Iterator[KeyValue[K, V]]]

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy