A monadic wrapper around the common case of Future[Option[A]].
Allows you to use for-comprehensions around Future[Option[A]]
without needing to special case each None case.
Example:
val result: Future[Option[Venue]] = (for {
user <- FutureOption(services.futureDb.fetchOne(Q(User).where(_.id eqs 32)))
tip <- FutureOption(services.futureDb.fetchOne(Q(Tip).where(_.userid eqs user.id)))
venue <- FutureOption(services.futureDb.fetchOne(Q(Venue).where(_.id eqs tip.venueid)))
if !venue.isHome
} yield venue).resolve
Example 2:
val sixteenFOpt = FutureOption(Future.value(Some(16)))
for { s <- sixteenFOpt } { println(s) }
This will output "16".
FutureOption is a value class. http://docs.scala-lang.org/overviews/core/value-classes.html
A monadic wrapper around the common case of Future[Option[A]]. Allows you to use for-comprehensions around Future[Option[A]] without needing to special case each None case.
Example:
val result: Future[Option[Venue]] = (for { user <- FutureOption(services.futureDb.fetchOne(Q(User).where(_.id eqs 32))) tip <- FutureOption(services.futureDb.fetchOne(Q(Tip).where(_.userid eqs user.id))) venue <- FutureOption(services.futureDb.fetchOne(Q(Venue).where(_.id eqs tip.venueid))) if !venue.isHome } yield venue).resolve
Example 2: val sixteenFOpt = FutureOption(Future.value(Some(16))) for { s <- sixteenFOpt } { println(s) } This will output "16".
FutureOption is a value class. http://docs.scala-lang.org/overviews/core/value-classes.html