From 044a453098d448a452bc886fa192fdc95bb19def Mon Sep 17 00:00:00 2001 From: Yonel Ceruto Date: Wed, 27 Dec 2023 06:53:33 -0500 Subject: [PATCH] Implementing ACID Transactions --- config/packages/messenger.php | 6 +++++- .../Application/Command/AnonymizeBooksCommandHandler.php | 2 -- .../Application/Command/CreateBookCommandHandler.php | 2 +- .../Application/Command/DiscountBookCommandHandler.php | 2 -- .../Application/Command/UpdateBookCommandHandler.php | 2 -- .../Infrastructure/Doctrine/DoctrineBookRepository.php | 2 -- 6 files changed, 6 insertions(+), 10 deletions(-) diff --git a/config/packages/messenger.php b/config/packages/messenger.php index 13d1930..d32f87f 100644 --- a/config/packages/messenger.php +++ b/config/packages/messenger.php @@ -11,7 +11,11 @@ 'messenger' => [ 'default_bus' => 'command.bus', 'buses' => [ - 'command.bus' => [], + 'command.bus' => [ + 'middleware' => [ + 'messenger.middleware.doctrine_transaction', + ], + ], 'query.bus' => [], ], 'transports' => [ diff --git a/src/BookStore/Application/Command/AnonymizeBooksCommandHandler.php b/src/BookStore/Application/Command/AnonymizeBooksCommandHandler.php index 96b66ee..a96cb79 100644 --- a/src/BookStore/Application/Command/AnonymizeBooksCommandHandler.php +++ b/src/BookStore/Application/Command/AnonymizeBooksCommandHandler.php @@ -23,8 +23,6 @@ public function __invoke(AnonymizeBooksCommand $command): void $book->update( author: new Author($command->anonymizedName), ); - - $this->bookRepository->save($book); } } } diff --git a/src/BookStore/Application/Command/CreateBookCommandHandler.php b/src/BookStore/Application/Command/CreateBookCommandHandler.php index 90d6245..a49b4a5 100644 --- a/src/BookStore/Application/Command/CreateBookCommandHandler.php +++ b/src/BookStore/Application/Command/CreateBookCommandHandler.php @@ -11,7 +11,7 @@ #[AsCommandHandler] final readonly class CreateBookCommandHandler { - public function __construct(private readonly BookRepositoryInterface $bookRepository) + public function __construct(private BookRepositoryInterface $bookRepository) { } diff --git a/src/BookStore/Application/Command/DiscountBookCommandHandler.php b/src/BookStore/Application/Command/DiscountBookCommandHandler.php index 5bcfe2e..6ee4241 100644 --- a/src/BookStore/Application/Command/DiscountBookCommandHandler.php +++ b/src/BookStore/Application/Command/DiscountBookCommandHandler.php @@ -23,7 +23,5 @@ public function __invoke(DiscountBookCommand $command): void } $book->applyDiscount($command->discount); - - $this->bookRepository->save($book); } } diff --git a/src/BookStore/Application/Command/UpdateBookCommandHandler.php b/src/BookStore/Application/Command/UpdateBookCommandHandler.php index 6b6c9c2..f64134d 100644 --- a/src/BookStore/Application/Command/UpdateBookCommandHandler.php +++ b/src/BookStore/Application/Command/UpdateBookCommandHandler.php @@ -31,8 +31,6 @@ public function __invoke(UpdateBookCommand $command): Book price: $command->price, ); - $this->bookRepository->save($book); - return $book; } } diff --git a/src/BookStore/Infrastructure/Doctrine/DoctrineBookRepository.php b/src/BookStore/Infrastructure/Doctrine/DoctrineBookRepository.php index b239aed..f139cf1 100644 --- a/src/BookStore/Infrastructure/Doctrine/DoctrineBookRepository.php +++ b/src/BookStore/Infrastructure/Doctrine/DoctrineBookRepository.php @@ -28,13 +28,11 @@ public function __construct(EntityManagerInterface $em) public function save(Book $book): void { $this->em->persist($book); - $this->em->flush(); } public function remove(Book $book): void { $this->em->remove($book); - $this->em->flush(); } public function ofId(BookId $id): ?Book