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 @@ +