diff --git a/backend-services/feed-service/app/controllers/MongoTestController.scala b/backend-services/feed-service/app/controllers/MongoTestController.scala new file mode 100644 index 0000000000000000000000000000000000000000..c086129a767005645bf5a1b040cb5375a3f0914e --- /dev/null +++ b/backend-services/feed-service/app/controllers/MongoTestController.scala @@ -0,0 +1,49 @@ +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") + } + } +} diff --git a/backend-services/feed-service/conf/routes b/backend-services/feed-service/conf/routes index 60e8169b9c08e6dedb48f47e8b87731312fb5492..c987e3139a94547944c6f45cb7398242a2986f69 100644 --- a/backend-services/feed-service/conf/routes +++ b/backend-services/feed-service/conf/routes @@ -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()