diff --git a/backend-services/feed-service/app/models/Daily.scala b/backend-services/feed-service/app/models/Daily.scala index 3d9f9fdf63dec6846e2b15d760261cc7ffab9912..4432ce8ea46cdfe72091e7444f200773b9c2450c 100644 --- a/backend-services/feed-service/app/models/Daily.scala +++ b/backend-services/feed-service/app/models/Daily.scala @@ -20,7 +20,7 @@ case class Daily( userId: ObjectId, questionId: ObjectId, content: String, - likes: Int, + usersLiked: Seq[ObjectId], createdAt: Date, updatedAt: Date ) @@ -36,7 +36,7 @@ object Daily { timeout: Int = 4 ): Daily = { val now: Date = Date.from(Instant.now()) - val daily: Daily = Daily(None, userId, questionId, content, 0, now, now) + val daily: Daily = Daily(None, userId, questionId, content, Seq.empty[ObjectId], now, now) val future: Future[Daily] = dailyRepo.insertDaily(daily) Await.result(future, timeout.seconds) } @@ -63,6 +63,8 @@ object Daily { // Convert from Daily object to JSON (serializing to JSON) def toJson(daily: Daily): JsValue = { + val usersLikedAsJsStrings = daily.usersLiked.map(id => JsString(id.toString())) + val dateFormat: SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'") val formattedCreatedAt: String = dateFormat.format(daily.createdAt) val formattedUpdatedAt: String = dateFormat.format(daily.updatedAt) @@ -72,6 +74,7 @@ object Daily { "userId" -> JsString(daily.userId.toString()), "questionId" -> JsString(daily.questionId.toString()), "content" -> JsString(daily.content), + "usersLiked" -> JsArray(usersLikedAsJsStrings), "createdAt" -> JsString(formattedCreatedAt), "updatedAt" -> JsString(formattedUpdatedAt) ) @@ -87,5 +90,5 @@ object Daily { } def toString(daily: Daily): String = - return s"Daily(${daily.id.toString()}, ${daily.userId.toString()}, ${daily.questionId.toString()}, ${daily.content}, ${daily.likes})" + return s"Daily(${daily.id.toString()}, ${daily.userId.toString()}, ${daily.questionId.toString()}, ${daily.content}, ${daily.usersLiked.toString()})" } diff --git a/backend-services/feed-service/app/repositories/DailyRepository.scala b/backend-services/feed-service/app/repositories/DailyRepository.scala index facbd0f4d199b9e7f2e79cb8124b43ce3f5d46ad..612cc4fdd2d32349dca4667f400315158288367f 100644 --- a/backend-services/feed-service/app/repositories/DailyRepository.scala +++ b/backend-services/feed-service/app/repositories/DailyRepository.scala @@ -12,6 +12,8 @@ import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.{Future, Await} import scala.concurrent.duration._ +import scala.collection.JavaConverters._ + class DailyRepository extends MongoDBClient { // Loads the default configuration @@ -82,7 +84,7 @@ class DailyRepository extends MongoDBClient { "user_id" -> daily.userId, "question_id" -> daily.questionId, "content" -> daily.content, - "likes" -> daily.likes, + "usersLiked" -> daily.usersLiked, "createdAt" -> daily.createdAt, "updatedAt" -> daily.updatedAt ) @@ -105,7 +107,7 @@ object DailyRepository { document.getObjectId("user_id"), document.getObjectId("question_id"), document.getString("content"), - document.getInteger("likes"), + document.getList("usersLiked", classOf[ObjectId]).asScala.toSeq, document.getDate("createdAt"), document.getDate("updatedAt") )