From e41218a77bba0ca46fb9f04c84bfab157aaf9eb6 Mon Sep 17 00:00:00 2001 From: Marcos Antonio Barreche Salguero Date: Fri, 22 Dec 2023 17:36:17 +0100 Subject: [PATCH] feat: create VideoLike command --- .../Videos/VideoLikePostController.php | 30 +++++++++++ .../Create/CreateVideoLikeCommand.php | 37 ++++++++++++++ .../Create/CreateVideoLikeCommandHandler.php | 25 ++++++++++ .../Application/Create/VideoLikeCreator.php | 28 +++++++++++ src/Mooc/VideoLike/Domain/UserId.php | 15 ++++++ src/Mooc/VideoLike/Domain/VideoLike.php | 40 +++++++++++++++ .../Domain/VideoLikeCreatedDomainEvent.php | 50 +++++++++++++++++++ src/Mooc/VideoLike/Domain/VideoLikeId.php | 15 ++++++ .../VideoLike/Domain/VideoLikeRepository.php | 8 +++ 9 files changed, 248 insertions(+) create mode 100644 apps/mooc/backend/src/Controller/Videos/VideoLikePostController.php create mode 100644 src/Mooc/VideoLike/Application/Create/CreateVideoLikeCommand.php create mode 100644 src/Mooc/VideoLike/Application/Create/CreateVideoLikeCommandHandler.php create mode 100644 src/Mooc/VideoLike/Application/Create/VideoLikeCreator.php create mode 100644 src/Mooc/VideoLike/Domain/UserId.php create mode 100644 src/Mooc/VideoLike/Domain/VideoLike.php create mode 100644 src/Mooc/VideoLike/Domain/VideoLikeCreatedDomainEvent.php create mode 100644 src/Mooc/VideoLike/Domain/VideoLikeId.php create mode 100644 src/Mooc/VideoLike/Domain/VideoLikeRepository.php diff --git a/apps/mooc/backend/src/Controller/Videos/VideoLikePostController.php b/apps/mooc/backend/src/Controller/Videos/VideoLikePostController.php new file mode 100644 index 00000000..08c1ef46 --- /dev/null +++ b/apps/mooc/backend/src/Controller/Videos/VideoLikePostController.php @@ -0,0 +1,30 @@ +get('messageId'), + videoLikeId: $request->get('videoLikeId'), + videoId: $request->get('videoId'), + userId: $request->get('userId'), + ); + + $this->dispatch($command); + + return new Response('', Response::HTTP_CREATED); + } +} \ No newline at end of file diff --git a/src/Mooc/VideoLike/Application/Create/CreateVideoLikeCommand.php b/src/Mooc/VideoLike/Application/Create/CreateVideoLikeCommand.php new file mode 100644 index 00000000..be9dad69 --- /dev/null +++ b/src/Mooc/VideoLike/Application/Create/CreateVideoLikeCommand.php @@ -0,0 +1,37 @@ +messageId; + } + + public function videoLikeId(): string + { + return $this->videoLikeId; + } + + public function videoId(): string + { + return $this->videoId; + } + + public function userId(): string + { + return $this->userId; + } +} \ No newline at end of file diff --git a/src/Mooc/VideoLike/Application/Create/CreateVideoLikeCommandHandler.php b/src/Mooc/VideoLike/Application/Create/CreateVideoLikeCommandHandler.php new file mode 100644 index 00000000..d7549c9e --- /dev/null +++ b/src/Mooc/VideoLike/Application/Create/CreateVideoLikeCommandHandler.php @@ -0,0 +1,25 @@ +videoLikeId()); + + $userId = new UserId($command->userId()); + + $videoId = new VideoId($command->videoId()); + + $this->creator->__invoke($id, $userId, $videoId); + } +} \ No newline at end of file diff --git a/src/Mooc/VideoLike/Application/Create/VideoLikeCreator.php b/src/Mooc/VideoLike/Application/Create/VideoLikeCreator.php new file mode 100644 index 00000000..35e1d788 --- /dev/null +++ b/src/Mooc/VideoLike/Application/Create/VideoLikeCreator.php @@ -0,0 +1,28 @@ +repository->save($videoLike); + + $this->publisher->publish(...$videoLike->pullDomainEvents()); + } +} \ No newline at end of file diff --git a/src/Mooc/VideoLike/Domain/UserId.php b/src/Mooc/VideoLike/Domain/UserId.php new file mode 100644 index 00000000..3e701636 --- /dev/null +++ b/src/Mooc/VideoLike/Domain/UserId.php @@ -0,0 +1,15 @@ +value; + } +} \ No newline at end of file diff --git a/src/Mooc/VideoLike/Domain/VideoLike.php b/src/Mooc/VideoLike/Domain/VideoLike.php new file mode 100644 index 00000000..7108ee7b --- /dev/null +++ b/src/Mooc/VideoLike/Domain/VideoLike.php @@ -0,0 +1,40 @@ +record(new VideoLikeCreatedDomainEvent($id->value(), $userId->value(), $videoId->value())); + + return $videoLike; + } + + public function id(): VideoLikeId + { + return $this->id; + } + + public function userId(): UserId + { + return $this->userId; + } + + public function videoId(): VideoId + { + return $this->videoId; + } +} \ No newline at end of file diff --git a/src/Mooc/VideoLike/Domain/VideoLikeCreatedDomainEvent.php b/src/Mooc/VideoLike/Domain/VideoLikeCreatedDomainEvent.php new file mode 100644 index 00000000..4ceb828f --- /dev/null +++ b/src/Mooc/VideoLike/Domain/VideoLikeCreatedDomainEvent.php @@ -0,0 +1,50 @@ + $this->userId, + 'video_id' => $this->videoId, + ]; + } + + public function userId(): string + { + return $this->userId; + } + + public function videoId(): string + { + return $this->videoId; + } +} \ No newline at end of file diff --git a/src/Mooc/VideoLike/Domain/VideoLikeId.php b/src/Mooc/VideoLike/Domain/VideoLikeId.php new file mode 100644 index 00000000..cf84dac8 --- /dev/null +++ b/src/Mooc/VideoLike/Domain/VideoLikeId.php @@ -0,0 +1,15 @@ +value; + } +} \ No newline at end of file diff --git a/src/Mooc/VideoLike/Domain/VideoLikeRepository.php b/src/Mooc/VideoLike/Domain/VideoLikeRepository.php new file mode 100644 index 00000000..4d64baaf --- /dev/null +++ b/src/Mooc/VideoLike/Domain/VideoLikeRepository.php @@ -0,0 +1,8 @@ +