From 65d6b8a5c8e51dcc28214a7333ad3b9f74018aea Mon Sep 17 00:00:00 2001 From: Javier Urbano Date: Tue, 27 Dec 2022 02:53:39 -0400 Subject: [PATCH] hexagonal-practice-2. Use port and adapter to video.destroy --- .../Application/Destroy/VideoDestructor.php | 28 +++++++++++++++++++ src/Mooc/Videos/Domain/VideoRepository.php | 2 ++ .../Persistence/VideoRepositoryMySql.php | 5 ++++ 3 files changed, 35 insertions(+) create mode 100644 src/Mooc/Videos/Application/Destroy/VideoDestructor.php diff --git a/src/Mooc/Videos/Application/Destroy/VideoDestructor.php b/src/Mooc/Videos/Application/Destroy/VideoDestructor.php new file mode 100644 index 000000000..915720ea3 --- /dev/null +++ b/src/Mooc/Videos/Application/Destroy/VideoDestructor.php @@ -0,0 +1,28 @@ +finder = new VideoFinder($repository); + } + + public function __invoke(VideoId $id) + { + /** @var Video */ + $video = $this->finder->__invoke($id); + + $this->repository->destroy($video); + } +} \ No newline at end of file diff --git a/src/Mooc/Videos/Domain/VideoRepository.php b/src/Mooc/Videos/Domain/VideoRepository.php index 7e68907a8..392251356 100644 --- a/src/Mooc/Videos/Domain/VideoRepository.php +++ b/src/Mooc/Videos/Domain/VideoRepository.php @@ -13,4 +13,6 @@ public function save(Video $video): void; public function search(VideoId $id): ?Video; public function searchByCriteria(Criteria $criteria): Videos; + + public function destroy(Video $video): void; } diff --git a/src/Mooc/Videos/Infrastructure/Persistence/VideoRepositoryMySql.php b/src/Mooc/Videos/Infrastructure/Persistence/VideoRepositoryMySql.php index 933277438..63c4dc272 100644 --- a/src/Mooc/Videos/Infrastructure/Persistence/VideoRepositoryMySql.php +++ b/src/Mooc/Videos/Infrastructure/Persistence/VideoRepositoryMySql.php @@ -39,4 +39,9 @@ public function searchByCriteria(Criteria $criteria): Videos return new Videos($videos); } + + public function destroy(Video $video): void + { + $this->remove($video); + } }