Skip to content

Commit ff48591

Browse files
committed
Fixed silent VersionConflicts in doobie driver
1 parent 588ece5 commit ff48591

File tree

2 files changed

+13
-8
lines changed

2 files changed

+13
-8
lines changed

modules/backend-tests/shared/src/main/scala/PersistenceSuite.scala

+6-4
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import edomata.backend.eventsourcing.Backend
2525
import edomata.core.CommandMessage
2626
import edomata.core.Edomaton
2727
import edomata.core.ResponseD
28+
import munit.Location
2829
import tests.TestDomain.given_ModelTC_State_Event_Rejection
2930

3031
import java.time.Instant
@@ -43,25 +44,26 @@ abstract class PersistenceSuite(
4344
private def assertJournal(
4445
s: SUT,
4546
address: String
46-
)(evs: Int*) = s.journal
47+
)(evs: Int*)(using Location) = s.journal
4748
.readStream(address)
4849
.map(_.payload)
4950
.compile
5051
.toList
5152
.assertEquals(evs.toList)
53+
5254
private def assertOutbox(
5355
s: SUT,
5456
address: String
55-
)(evs: Int*) = s.outbox.read
57+
)(evs: Int*)(using Location) = s.outbox.read
5658
.filter(_.streamId == address)
5759
.map(_.data)
5860
.compile
5961
.toList
6062
.assertEquals(evs.toList)
6163

62-
private def assertNotifiedJournal(s: SUT) =
64+
private def assertNotifiedJournal(s: SUT)(using Location) =
6365
s.updates.journal.head.compile.lastOrError.assertEquals(())
64-
private def assertNotifiedOutbox(s: SUT) =
66+
private def assertNotifiedOutbox(s: SUT)(using Location) =
6567
s.updates.outbox.head.compile.lastOrError.assertEquals(())
6668

6769
check("Must append correctly") { s =>

modules/doobie/src/main/scala/DoobieRepository.scala

+7-4
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import cats.data.Chain
2323
import cats.data.NonEmptyChain
2424
import cats.effect.kernel.Clock
2525
import cats.effect.kernel.Sync
26-
import cats.implicits.*
26+
import cats.syntax.all.*
2727
import edomata.backend.*
2828
import edomata.backend.eventsourcing.*
2929
import edomata.core.*
@@ -89,9 +89,12 @@ private final class DoobieRepository[F[_], S, E, R, N](
8989
_ <- cmds.insert(ctx.command).run.assertInserted
9090
} yield ()
9191

92-
_ <- query.transact(trx).attemptSomeSqlState {
93-
case sqlstate.class23.UNIQUE_VIOLATION => BackendError.VersionConflict
94-
}
92+
_ <- query
93+
.transact(trx)
94+
.attemptSomeSqlState { case sqlstate.class23.UNIQUE_VIOLATION =>
95+
BackendError.VersionConflict
96+
}
97+
.flatMap(F.fromEither)
9598
_ <- updates.notifyJournal
9699
_ <- updates.notifyOutbox
97100
} yield ()

0 commit comments

Comments
 (0)