Skip to content
Snippets Groups Projects
DailyController.scala 1.02 KiB
Newer Older
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")
    }
  }
}