Search code examples
scalaplayframeworkfuture

Scala Found Unit Expected Future[Result]


def update() = AuthAction.async(parse.json) { implicit request =>

  val list = request.body.asInstanceOf[JsArray].value

  list.foreach( mapping => {
      repository.update()
  }.andThen {
    case Success(value) => repository.update2()
    case Failure(exception) => {
    BadRequest(errorResponse(Json.toJson(""), "updation failed"))
  }
 })

}

I have a controller function where I want to wait for a DB repo function ( repository.update2() )to complete and then send a response, but its saying "Found Unit expected Future[Result]"


Solution

  • Your success claus is presumably returning Unit where a Future response is required. Try this:

    .andThen {
        case Success(value) =>
            repository.update2()
            Future.successful(Ok("repository updated"))
        case Failure(exception) =>
            Future.successful(BadRequest(exception.getMessage())))
      }