diff --git a/src/Mooc/Courses/Application/Find/CoursesFinder.php b/src/Mooc/Courses/Application/Find/CoursesFinder.php new file mode 100644 index 000000000..1e8b6a70a --- /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 000000000..8c90d529b --- /dev/null +++ b/src/Mooc/Courses/Application/Find/CoursesResponse.php @@ -0,0 +1,26 @@ +courses = $courses; + } + + public function courses(): array + { + return $this->courses; + } +} diff --git a/src/Mooc/Courses/Application/Find/CoursesResponseConverter.php b/src/Mooc/Courses/Application/Find/CoursesResponseConverter.php new file mode 100644 index 000000000..723aab7a8 --- /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); + } +} diff --git a/src/Mooc/Courses/Domain/CourseRepository.php b/src/Mooc/Courses/Domain/CourseRepository.php index bf12fad1b..b1381909f 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 000000000..464de2c3e --- /dev/null +++ b/src/Mooc/Courses/Domain/CoursesFinder.php @@ -0,0 +1,24 @@ +repository->all(); + + if (null === $courses) { + throw new CoursesNotFound(); + } + + return $courses; + } +} diff --git a/src/Mooc/Courses/Domain/CoursesNotFound.php b/src/Mooc/Courses/Domain/CoursesNotFound.php new file mode 100644 index 000000000..990b9a0b6 --- /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 05124081d..3924c2106 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); diff --git a/src/Mooc/Videos/Application/Update/UpdateVideoTitleCommand.php b/src/Mooc/Videos/Application/Update/UpdateVideoTitleCommand.php new file mode 100644 index 000000000..9787bf2d5 --- /dev/null +++ b/src/Mooc/Videos/Application/Update/UpdateVideoTitleCommand.php @@ -0,0 +1,22 @@ +id; + } + + public function title(): string + { + return $this->title; + } +} diff --git a/src/Mooc/Videos/Application/Update/UpdateVideoTitleCommandHandler.php b/src/Mooc/Videos/Application/Update/UpdateVideoTitleCommandHandler.php new file mode 100644 index 000000000..2b5e64157 --- /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); + } +}