aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuicommon/computation/TryToComputationOps.scala
blob: 8282bc627e4e4899bb7e2960ee81d6377218cea9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package xyz.driver.pdsuicommon.computation

import scala.concurrent.ExecutionContext
import scala.util.control.NonFatal
import scala.util.{Failure, Success, Try}

final class TryToComputationOps[T](val self: Try[T]) extends AnyVal {

  def toComputation[ER](implicit exceptionToErrorResponse: Throwable => ER,
                        ec: ExecutionContext): Computation[ER, T] = self match {
    case Success(x) => Computation.continue(x)
    case Failure(NonFatal(e)) => Computation.abort(exceptionToErrorResponse(e))
    case Failure(e) => Computation.fail(e)
  }
}