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

Add functionality to like a post

parent 8f2629ff
No related branches found
No related tags found
1 merge request!14Add endpoints to manage Dailies
......@@ -61,6 +61,15 @@ object Daily {
Await.result(result, timeout.seconds)
}
def likeAsync(dailyId: ObjectId, userId: ObjectId, timeout: Int = 4): Unit = {
val result: Future[Unit] = for {
daily: Daily <- dailyRepo.getDaily(dailyId)
unit: Unit <- dailyRepo.like(daily, userId)
} yield unit
Await.result(result, timeout.seconds)
}
// Convert from Daily object to JSON (serializing to JSON)
def toJson(daily: Daily): JsValue = {
val usersLikedAsJsStrings = daily.usersLiked.map(id => JsString(id.toString()))
......
......@@ -5,8 +5,9 @@ import com.typesafe.config.ConfigFactory
import models.{Daily, MongoDBClient}
import org.mongodb.scala.{MongoCollection, Document}
import org.mongodb.scala.model.{Filters}
import org.mongodb.scala.model.{Filters, Updates}
import org.bson.types.ObjectId
import org.bson.conversions.Bson
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.{Future, Await}
......@@ -108,6 +109,16 @@ class DailyRepository extends MongoDBClient {
Future.successful(updatedDaily)
})
}
def like(daily: Daily, user: ObjectId): Future[Unit] = {
val updatedUsersLiked: Seq[ObjectId] = daily.usersLiked :+ user
val update: Bson = Updates.set("usersLiked", updatedUsersLiked)
val updates: Seq[Bson] = Seq(update)
val dailyId = daily.id.getOrElse(throw new RuntimeException)
val result = updateOne(dailiesCollection, dailyId, updates)
Future.successful(result)
}
}
......
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