cataquack/cataquack/src/main/scala/tf/bug/cataquack/Storage.scala

20 lines
516 B
Scala
Raw Normal View History

2019-01-13 21:52:27 +00:00
package tf.bug.cataquack
import cats._
import cats.implicits._
2019-01-13 21:52:27 +00:00
trait Storage[F[_], C[_]] {
2019-01-13 21:52:27 +00:00
def query[T](key: String): F[T]
def map[A, B](fa: F[A])(f: A => B)(implicit functor: Functor[F]): F[B] = fa.map(f)
def flatMap[A, B](fa: F[A])(f: A => F[B])(implicit flatMap: FlatMap[F]): F[B] = fa.flatMap(f)
def filter[T](ft: F[T])(f: T => Boolean)(implicit filterFunctor: FunctorFilter[F]): F[T] = ft.filter(f)
/** Type like List, Id, etc */
type Output[T]
def execute[T: C](f: F[T]): this.Output[T]
2019-01-13 21:52:27 +00:00
}