Skip to content
Snippets Groups Projects
Commit 3975dc83 authored by Felipe D'Abrantes's avatar Felipe D'Abrantes
Browse files

Create a MongoDB test endpoint

parent 0a1ea3b0
No related branches found
No related tags found
1 merge request!10Initialise a Scala Play project with a MongoDB controller for Feed Service
package controllers
import javax.inject._
import play.api._
import play.api.mvc._
import models.MongoDBClient
import org.mongodb.scala.{Document}
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.{Future, Await, TimeoutException}
import scala.concurrent.duration._
/**
* This controller creates an `Action` to handle HTTP MongoDB requests.
*/
@Singleton
class MongoTestController @Inject()(val controllerComponents: ControllerComponents) extends BaseController {
/**
* Create an Action to test the Mongo Client.
*/
def index() = Action { implicit request: Request[AnyContent] =>
println("MongoController")
var database_name = "{DATABASE_NAME}"
var collection_name = "{COLLECTION_NAME}"
var mongo = new MongoDBClient()
// Sequentially waits for Future objects to complete before calling next method
val result: Future[Seq[Document]] = for {
db <- mongo.getDatabase(database_name)
collection <- mongo.getCollection(db, collection_name)
findResult <- mongo.find(collection)
} yield findResult
try {
// Wait for 10 seconds for the Future to complete
val resultCompleted = Await.result(result, 4.seconds)
val jsonResult: Seq[String] = resultCompleted.map(doc => doc.toJson())
Ok(jsonResult.toString())
} catch {
case e: TimeoutException =>
BadRequest("Request timed out")
}
}
}
......@@ -8,3 +8,5 @@ GET / controllers.HomeController.index()
# Map static resources from the /public folder to the /assets URL path
GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset)
GET /mongo_test controllers.MongoTestController.index()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment