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); + } }