package controllers import javax.inject._ import play.api._ import play.api.mvc._ import models.Daily import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.{Future, Await, TimeoutException} import scala.concurrent.duration._ import org.bson.types.ObjectId /** * This controller handles all the Daily endpoints. */ @Singleton class DailyController @Inject()(val controllerComponents: ControllerComponents) extends BaseController { /** * Create an Action to fetch all the Dailies in the DB. */ def getAll() = Action { implicit request: Request[AnyContent] => println("DailyController:getAll") var result = Daily.getAllDailies() try { // Wait for 4 seconds for the Future to complete val resultCompleted = Await.result(result, 4.seconds) val jsonResult: Seq[String] = resultCompleted.map(daily => Daily.toString(daily)) Ok(jsonResult.toString()) } catch { case e: TimeoutException => BadRequest("Request timed out") } } def create() = Action { implicit request: Request[AnyContent] => println("DailyController:create") // Dummy data var result = Daily.createDaily(None, new ObjectId("641128f7e80bcd1ba39d04ae"), new ObjectId("641128f7e80bcd1ba39d04ae"), "asddas", 20) try { // Wait for 4 seconds for the Future to complete val resultCompleted = Await.result(result, 4.seconds) Ok(Daily.toString(resultCompleted)) } catch { case e: TimeoutException => BadRequest("Request timed out") } } }