From a1a4cd884caed47887d4ab3312244e0bea4e3e44 Mon Sep 17 00:00:00 2001 From: Javier Urbano Date: Sat, 28 May 2022 15:19:43 -0400 Subject: [PATCH 1/3] create VideoTitleUpdate Command --- .../Update/UpdateVideoTitleCommand.php | 22 +++++++++++++++++++ .../Update/UpdateVideoTitleCommandHandler.php | 21 ++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 src/Mooc/Videos/Application/Update/UpdateVideoTitleCommand.php create mode 100644 src/Mooc/Videos/Application/Update/UpdateVideoTitleCommandHandler.php diff --git a/src/Mooc/Videos/Application/Update/UpdateVideoTitleCommand.php b/src/Mooc/Videos/Application/Update/UpdateVideoTitleCommand.php new file mode 100644 index 00000000..a6d431f7 --- /dev/null +++ b/src/Mooc/Videos/Application/Update/UpdateVideoTitleCommand.php @@ -0,0 +1,22 @@ +id; + } + + public function title(): string + { + return $this->title; + } +} \ No newline at end of file diff --git a/src/Mooc/Videos/Application/Update/UpdateVideoTitleCommandHandler.php b/src/Mooc/Videos/Application/Update/UpdateVideoTitleCommandHandler.php new file mode 100644 index 00000000..babc6431 --- /dev/null +++ b/src/Mooc/Videos/Application/Update/UpdateVideoTitleCommandHandler.php @@ -0,0 +1,21 @@ +id()); + $title = new VideoTitle($command->title()); + + $this->updater->__invoke($id, $title); + } +} \ No newline at end of file From 6272a4573889f0f7818212832170149cb52f7deb Mon Sep 17 00:00:00 2001 From: Javier Urbano Date: Mon, 21 Nov 2022 06:03:02 -0400 Subject: [PATCH 2/3] add CoursesQuery --- .../Courses/CoursesPostWebController.php | 4 +-- .../Application/Find/CoursesFinder.php | 24 +++++++++++++++ .../Application/Find/CoursesResponse.php | 26 +++++++++++++++++ .../Find/CoursesResponseConverter.php | 17 +++++++++++ .../Application/Find/FindCoursesQuery.php | 12 ++++++++ .../Find/FindCoursesQueryHandler.php | 29 +++++++++++++++++++ src/Mooc/Courses/Domain/CourseRepository.php | 2 ++ src/Mooc/Courses/Domain/CoursesFinder.php | 24 +++++++++++++++ src/Mooc/Courses/Domain/CoursesNotFound.php | 25 ++++++++++++++++ .../Persistence/DoctrineCourseRepository.php | 5 ++++ .../Persistence/FileCourseRepository.php | 6 ++++ 11 files changed, 172 insertions(+), 2 deletions(-) create mode 100644 src/Mooc/Courses/Application/Find/CoursesFinder.php create mode 100644 src/Mooc/Courses/Application/Find/CoursesResponse.php create mode 100644 src/Mooc/Courses/Application/Find/CoursesResponseConverter.php create mode 100644 src/Mooc/Courses/Application/Find/FindCoursesQuery.php create mode 100644 src/Mooc/Courses/Application/Find/FindCoursesQueryHandler.php create mode 100644 src/Mooc/Courses/Domain/CoursesFinder.php create mode 100644 src/Mooc/Courses/Domain/CoursesNotFound.php diff --git a/apps/backoffice/frontend/src/Controller/Courses/CoursesPostWebController.php b/apps/backoffice/frontend/src/Controller/Courses/CoursesPostWebController.php index d77b9633..d4c5a37b 100644 --- a/apps/backoffice/frontend/src/Controller/Courses/CoursesPostWebController.php +++ b/apps/backoffice/frontend/src/Controller/Courses/CoursesPostWebController.php @@ -47,9 +47,9 @@ private function createCourse(Request $request): RedirectResponse { $this->dispatch( new CreateCourseCommand( - $request->request->getAlpha('id'), + $request->request->get('id'), $request->request->getAlpha('name'), - $request->request->getAlpha('duration') + $request->request->get('duration') ) ); diff --git a/src/Mooc/Courses/Application/Find/CoursesFinder.php b/src/Mooc/Courses/Application/Find/CoursesFinder.php new file mode 100644 index 00000000..1e8b6a70 --- /dev/null +++ b/src/Mooc/Courses/Application/Find/CoursesFinder.php @@ -0,0 +1,24 @@ +finder = new DomainCoursesFinder($repository); + } + + public function __invoke(): array + { + return $this->finder->__invoke(); + } +} diff --git a/src/Mooc/Courses/Application/Find/CoursesResponse.php b/src/Mooc/Courses/Application/Find/CoursesResponse.php new file mode 100644 index 00000000..9414a507 --- /dev/null +++ b/src/Mooc/Courses/Application/Find/CoursesResponse.php @@ -0,0 +1,26 @@ +courses = $courses; + } + + public function courses(): array + { + return $this->courses; + } +} \ No newline at end of file diff --git a/src/Mooc/Courses/Application/Find/CoursesResponseConverter.php b/src/Mooc/Courses/Application/Find/CoursesResponseConverter.php new file mode 100644 index 00000000..6178f687 --- /dev/null +++ b/src/Mooc/Courses/Application/Find/CoursesResponseConverter.php @@ -0,0 +1,17 @@ +finder = pipe($finder, new CoursesResponseConverter()); + } + + public function __invoke(FindCoursesQuery $query): CoursesResponse + { + return apply($this->finder); + } +} \ No newline at end of file diff --git a/src/Mooc/Courses/Domain/CourseRepository.php b/src/Mooc/Courses/Domain/CourseRepository.php index bf12fad1..b1381909 100644 --- a/src/Mooc/Courses/Domain/CourseRepository.php +++ b/src/Mooc/Courses/Domain/CourseRepository.php @@ -11,4 +11,6 @@ interface CourseRepository public function save(Course $course): void; public function search(CourseId $id): ?Course; + + public function all(): ?array; } diff --git a/src/Mooc/Courses/Domain/CoursesFinder.php b/src/Mooc/Courses/Domain/CoursesFinder.php new file mode 100644 index 00000000..50bf66f8 --- /dev/null +++ b/src/Mooc/Courses/Domain/CoursesFinder.php @@ -0,0 +1,24 @@ +repository->all(); + + if (null === $courses) { + throw new CoursesNotFound(); + } + + return $courses; + } +} \ No newline at end of file diff --git a/src/Mooc/Courses/Domain/CoursesNotFound.php b/src/Mooc/Courses/Domain/CoursesNotFound.php new file mode 100644 index 00000000..990b9a0b --- /dev/null +++ b/src/Mooc/Courses/Domain/CoursesNotFound.php @@ -0,0 +1,25 @@ +repository(Course::class)->find($id); } + + public function all(): ?array + { + return $this->repository(Course::class)->findAll(); + } } diff --git a/src/Mooc/Courses/Infrastructure/Persistence/FileCourseRepository.php b/src/Mooc/Courses/Infrastructure/Persistence/FileCourseRepository.php index 05124081..3924c210 100644 --- a/src/Mooc/Courses/Infrastructure/Persistence/FileCourseRepository.php +++ b/src/Mooc/Courses/Infrastructure/Persistence/FileCourseRepository.php @@ -24,6 +24,12 @@ public function search(CourseId $id): ?Course : null; } + public function all(): ?array + { + // TODO + return []; + } + private function fileName(string $id): string { return sprintf('%s.%s.repo', self::FILE_PATH, $id); From fb0d5155a55771679a6b1c78232fe33d542a4647 Mon Sep 17 00:00:00 2001 From: Javier Urbano Date: Mon, 21 Nov 2022 06:19:28 -0400 Subject: [PATCH 3/3] fix endfile. add blank line --- src/Mooc/Courses/Application/Find/CoursesResponse.php | 2 +- src/Mooc/Courses/Application/Find/CoursesResponseConverter.php | 2 +- src/Mooc/Courses/Application/Find/FindCoursesQuery.php | 2 +- src/Mooc/Courses/Application/Find/FindCoursesQueryHandler.php | 2 +- src/Mooc/Courses/Domain/CoursesFinder.php | 2 +- src/Mooc/Videos/Application/Update/UpdateVideoTitleCommand.php | 2 +- .../Application/Update/UpdateVideoTitleCommandHandler.php | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Mooc/Courses/Application/Find/CoursesResponse.php b/src/Mooc/Courses/Application/Find/CoursesResponse.php index 9414a507..8c90d529 100644 --- a/src/Mooc/Courses/Application/Find/CoursesResponse.php +++ b/src/Mooc/Courses/Application/Find/CoursesResponse.php @@ -23,4 +23,4 @@ public function courses(): array { return $this->courses; } -} \ No newline at end of file +} diff --git a/src/Mooc/Courses/Application/Find/CoursesResponseConverter.php b/src/Mooc/Courses/Application/Find/CoursesResponseConverter.php index 6178f687..723aab7a 100644 --- a/src/Mooc/Courses/Application/Find/CoursesResponseConverter.php +++ b/src/Mooc/Courses/Application/Find/CoursesResponseConverter.php @@ -14,4 +14,4 @@ public function __invoke(array $courses): CoursesResponse { return new CoursesResponse($courses); } -} \ No newline at end of file +} diff --git a/src/Mooc/Courses/Application/Find/FindCoursesQuery.php b/src/Mooc/Courses/Application/Find/FindCoursesQuery.php index 7bf7ae3a..1b7a56c5 100644 --- a/src/Mooc/Courses/Application/Find/FindCoursesQuery.php +++ b/src/Mooc/Courses/Application/Find/FindCoursesQuery.php @@ -9,4 +9,4 @@ final class FindCoursesQuery implements Query { -} \ No newline at end of file +} diff --git a/src/Mooc/Courses/Application/Find/FindCoursesQueryHandler.php b/src/Mooc/Courses/Application/Find/FindCoursesQueryHandler.php index 394b269c..4dbaecb0 100644 --- a/src/Mooc/Courses/Application/Find/FindCoursesQueryHandler.php +++ b/src/Mooc/Courses/Application/Find/FindCoursesQueryHandler.php @@ -26,4 +26,4 @@ public function __invoke(FindCoursesQuery $query): CoursesResponse { return apply($this->finder); } -} \ No newline at end of file +} diff --git a/src/Mooc/Courses/Domain/CoursesFinder.php b/src/Mooc/Courses/Domain/CoursesFinder.php index 50bf66f8..464de2c3 100644 --- a/src/Mooc/Courses/Domain/CoursesFinder.php +++ b/src/Mooc/Courses/Domain/CoursesFinder.php @@ -21,4 +21,4 @@ public function __invoke(): array return $courses; } -} \ No newline at end of file +} diff --git a/src/Mooc/Videos/Application/Update/UpdateVideoTitleCommand.php b/src/Mooc/Videos/Application/Update/UpdateVideoTitleCommand.php index a6d431f7..9787bf2d 100644 --- a/src/Mooc/Videos/Application/Update/UpdateVideoTitleCommand.php +++ b/src/Mooc/Videos/Application/Update/UpdateVideoTitleCommand.php @@ -19,4 +19,4 @@ public function title(): string { return $this->title; } -} \ No newline at end of file +} diff --git a/src/Mooc/Videos/Application/Update/UpdateVideoTitleCommandHandler.php b/src/Mooc/Videos/Application/Update/UpdateVideoTitleCommandHandler.php index babc6431..2b5e6415 100644 --- a/src/Mooc/Videos/Application/Update/UpdateVideoTitleCommandHandler.php +++ b/src/Mooc/Videos/Application/Update/UpdateVideoTitleCommandHandler.php @@ -18,4 +18,4 @@ public function __invoke(UpdateVideoTitleCommand $command) { $this->updater->__invoke($id, $title); } -} \ No newline at end of file +}