From 7af27eb8f5953796e0e565e314b136b820c5ae65 Mon Sep 17 00:00:00 2001 From: Charles Dufour Date: Tue, 28 Jan 2025 14:57:42 +0100 Subject: [PATCH] [TRELLO-2880] Creating a website should be transactionnal (#1861) --- app/repositories/website/WebsiteRepository.scala | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/app/repositories/website/WebsiteRepository.scala b/app/repositories/website/WebsiteRepository.scala index 45f3fd04..6e2c8ba6 100644 --- a/app/repositories/website/WebsiteRepository.scala +++ b/app/repositories/website/WebsiteRepository.scala @@ -38,9 +38,9 @@ class WebsiteRepository( import dbConfig._ - override def validateAndCreate(newWebsite: Website): Future[Website] = - db.run( - table + override def validateAndCreate(newWebsite: Website): Future[Website] = db.run( + (for { + maybeWebsite <- table .filter(_.host === newWebsite.host) .filter { website => val hasBeenAlreadyIdentifiedByConso = @@ -55,10 +55,12 @@ class WebsiteRepository( } .result .headOption - ).flatMap { - case Some(website) => Future.successful(website) - case None => create(newWebsite) - } + website <- maybeWebsite match { + case Some(website) => DBIO.successful(website) + case None => table returning table += newWebsite + } + } yield website).transactionally + ) override def searchValidAssociationByHost(host: String): Future[Seq[Website]] = db.run(