aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuicommon/computation/TryToComputationOps.scala
blob: 45f6d41547cb301039b54fba11437aa9caa15597 (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)
    }
}