From 7338eb288e3f860768fae8523f5a9d22ded66764 Mon Sep 17 00:00:00 2001 From: Felipe D'Abrantes <felidabrantes@gmail> Date: Tue, 21 Mar 2023 11:29:12 +0000 Subject: [PATCH] Return JSON intead of string (#19) --- .../app/controllers/DailyController.scala | 7 ++++--- .../feed-service/app/models/Daily.scala | 21 +++++++++++++++++-- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/backend-services/feed-service/app/controllers/DailyController.scala b/backend-services/feed-service/app/controllers/DailyController.scala index ebe63be3..1c1f1350 100644 --- a/backend-services/feed-service/app/controllers/DailyController.scala +++ b/backend-services/feed-service/app/controllers/DailyController.scala @@ -24,8 +24,8 @@ class DailyController @Inject()(val controllerComponents: ControllerComponents) try { val result: Seq[Daily] = Daily.getAllDailiesAsync() - val jsonResult: Seq[String] = result.map(daily => Daily.toString(daily)) - Ok(jsonResult.toString()) + val jsonResult = Daily.toJson(result) + Ok(jsonResult) } catch { case ex: TimeoutException => BadRequest("Request timed out") case ex => BadRequest("Exception raised") @@ -38,7 +38,8 @@ class DailyController @Inject()(val controllerComponents: ControllerComponents) try { // Dummy data val result = Daily.createDailyAsync(None, new ObjectId("641128f7e80bcd1ba39d04ae"), new ObjectId("641128f7e80bcd1ba39d04ae"), "asddas", 221) - Ok(Daily.toString(result)) + val jsonResult = Daily.toJson(result) + Ok(jsonResult) } catch { case e: TimeoutException => BadRequest("Request timed out") case ex => BadRequest("Exception raised") diff --git a/backend-services/feed-service/app/models/Daily.scala b/backend-services/feed-service/app/models/Daily.scala index b307af14..b5cfbc2c 100644 --- a/backend-services/feed-service/app/models/Daily.scala +++ b/backend-services/feed-service/app/models/Daily.scala @@ -6,6 +6,9 @@ import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.{Future, Await} import scala.concurrent.duration._ +import play.api.libs.json.Json +import play.api.libs.json.{Json, JsValue, JsString, JsNumber, JsObject, JsArray} + case class Daily( id: Option[ObjectId], @@ -36,10 +39,24 @@ object Daily { Await.result(future, timeout.seconds) } + // Convert from Daily object to JSON (serializing to JSON) + def toJson(daily: Daily): JsValue = { + val dailyJson = Seq( + "id" -> JsString(daily.id.getOrElse("").toString()), + "userId" -> JsString(daily.userId.toString()), + "questionId" -> JsString(daily.questionId.toString()), + "content" -> JsString(daily.content), + "likes" -> JsNumber(daily.likes) + ) + + Json.toJson(JsObject(dailyJson)) } - def getAllDailies(): Future[Seq[Daily]] = { - dailyRepo.getAllDailies() + // Convert from Daily set to JSON (serializing to JSON) + def toJson(dailies: Seq[Daily]): JsValue = { + val dailiesJson = dailies.map(daily => Daily.toJson(daily)) + + Json.toJson(JsArray(dailiesJson)) } def toString(daily: Daily): String = -- GitLab