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

Add createdAt field to Dailies (#19)

parent 871e0ff3
No related branches found
No related tags found
1 merge request!14Add endpoints to manage Dailies
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))
......
......@@ -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)
......
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