diff --git a/backend-services/feed-service/app/controllers/DailyController.scala b/backend-services/feed-service/app/controllers/DailyController.scala index 9b2dc14718484c5da888805667e19e78a7e7aab6..0217dc2e89b06f12c5be545fff00eac0b1aa274c 100644 --- a/backend-services/feed-service/app/controllers/DailyController.scala +++ b/backend-services/feed-service/app/controllers/DailyController.scala @@ -5,6 +5,7 @@ import play.api.mvc._ import play.api.libs.json.JsValue import models.{Daily} +import models.exceptions.ConflictException import scala.concurrent.TimeoutException import org.bson.types.ObjectId @@ -92,6 +93,7 @@ class DailyController @Inject()(val controllerComponents: ControllerComponents) Ok("Updated") } catch { case _: TimeoutException => BadRequest("Request timed out") + case ex: ConflictException => BadRequest(ex.getMessage()) case _: Throwable => BadRequest("Exception raised") } } diff --git a/backend-services/feed-service/app/models/Daily.scala b/backend-services/feed-service/app/models/Daily.scala index e4fa685fcb3e8dff60395e3dfb0aafe7140e45fb..db1c1098e307312756681bdfcad4eabae93d4a69 100644 --- a/backend-services/feed-service/app/models/Daily.scala +++ b/backend-services/feed-service/app/models/Daily.scala @@ -1,6 +1,7 @@ package models import repositories.{DailyRepository} +import models.exceptions.{ConflictException} import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.{Future, Await} @@ -67,6 +68,9 @@ object Daily { val result: Future[Unit] = for { daily: Daily <- dailyRepo.getById(dailyId) like: Unit <- { + // Check user has not already liked Daily + if (daily.usersLiked.contains(likerId)) throw new ConflictException("User has already liked this Daily.") + val updatedUsersLiked: Seq[ObjectId] = daily.usersLiked :+ likerId val update: Bson = Updates.set("usersLiked", updatedUsersLiked) diff --git a/backend-services/feed-service/app/models/exceptions/ConflictException.scala b/backend-services/feed-service/app/models/exceptions/ConflictException.scala new file mode 100644 index 0000000000000000000000000000000000000000..bf99cc11e61694842f0f160c76a889a78aab8507 --- /dev/null +++ b/backend-services/feed-service/app/models/exceptions/ConflictException.scala @@ -0,0 +1,3 @@ +package models.exceptions + +case class ConflictException(message: String) extends Exception(message)