diff --git a/backend-services/feed-service/app/models/Daily.scala b/backend-services/feed-service/app/models/Daily.scala index 302afdf64811e82de06402830e62f0b492815eca..c73a11c9b1f36d142b3c59173ffa5ca48bf6c52c 100644 --- a/backend-services/feed-service/app/models/Daily.scala +++ b/backend-services/feed-service/app/models/Daily.scala @@ -1,11 +1,16 @@ package models import repositories.DailyRepository -import org.bson.types.ObjectId + import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.{Future, Await} import scala.concurrent.duration._ +import org.bson.types.ObjectId +import java.util.Date +import java.time.Instant +import java.text.SimpleDateFormat + import play.api.libs.json.Json import play.api.libs.json.{Json, JsValue, JsString, JsNumber, JsObject, JsArray} @@ -15,7 +20,8 @@ case class Daily( userId: ObjectId, questionId: ObjectId, content: String, - likes: Int + likes: Int, + createdAt: Date ) object Daily { @@ -27,9 +33,10 @@ object Daily { questionId: ObjectId, content: String, likes: Int = 0, + createdAt: Date = Date.from(Instant.now()), timeout: Int = 4 ): Daily = { - val daily: Daily = Daily(None, userId, questionId, content, likes) + val daily: Daily = Daily(None, userId, questionId, content, likes, createdAt) val future: Future[Daily] = dailyRepo.insertDaily(daily) Await.result(future, timeout.seconds) } @@ -56,12 +63,16 @@ object Daily { // Convert from Daily object to JSON (serializing to JSON) def toJson(daily: Daily): JsValue = { + val dateFormat: SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); + val formattedDate: String = dateFormat.format(daily.createdAt); + 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) + "likes" -> JsNumber(daily.likes), + "createdAt" -> JsString(formattedDate) ) Json.toJson(JsObject(dailyJson)) diff --git a/backend-services/feed-service/app/repositories/DailyRepository.scala b/backend-services/feed-service/app/repositories/DailyRepository.scala index 5e18898181decedf376b2ea37c13116cf7fff0cd..53519dad7796d88a0b918489a4c3189dd9de5a9e 100644 --- a/backend-services/feed-service/app/repositories/DailyRepository.scala +++ b/backend-services/feed-service/app/repositories/DailyRepository.scala @@ -43,14 +43,15 @@ class DailyRepository extends MongoDBClient { */ def getAllDailies(): Future[Seq[Daily]] = { val documents: Future[Seq[Document]] = find(dailiesCollection) - + documents.map(document => { document.map(doc => Daily( Some(doc.getObjectId("_id")), doc.getObjectId("user_id"), doc.getObjectId("question_id"), doc.getString("content"), - doc.getInteger("likes") + doc.getInteger("likes"), + doc.getDate("createdAt") )) }) } @@ -70,7 +71,8 @@ class DailyRepository extends MongoDBClient { doc.getObjectId("user_id"), doc.getObjectId("question_id"), doc.getString("content"), - doc.getInteger("likes") + doc.getInteger("likes"), + doc.getDate("createdAt") )) }) } @@ -92,7 +94,8 @@ class DailyRepository extends MongoDBClient { doc.getObjectId("user_id"), doc.getObjectId("question_id"), doc.getString("content"), - doc.getInteger("likes") + doc.getInteger("likes"), + doc.getDate("createdAt") )) }) } @@ -108,7 +111,8 @@ class DailyRepository extends MongoDBClient { "user_id" -> daily.userId, "question_id" -> daily.questionId, "content" -> daily.content, - "likes" -> daily.likes + "likes" -> daily.likes, + "createdAt" -> daily.createdAt ) val result = insertOne(dailiesCollection, document)