├── 02-tiny_aggregates └── 3-view_projections │ ├── 1-without_projections │ ├── .editorconfig │ ├── .eslintrc.json │ ├── .gitignore │ ├── Makefile │ ├── README.md │ ├── databases │ │ └── ecommerce.sql │ ├── docker-compose.yml │ ├── etc │ │ └── http │ │ │ ├── product-GET.http │ │ │ ├── product-PUT.http │ │ │ ├── product_review-PUT.http │ │ │ ├── product_reviews-GET.http │ │ │ ├── products-GET.http │ │ │ ├── user-GET.http │ │ │ └── user-PUT.http │ ├── next.config.js │ ├── package-lock.json │ ├── package.json │ ├── postcss.config.js │ ├── public │ │ └── codely.svg │ ├── src │ │ ├── app │ │ │ └── api │ │ │ │ ├── product_reviews │ │ │ │ ├── [id] │ │ │ │ │ └── route.ts │ │ │ │ └── route.ts │ │ │ │ ├── products │ │ │ │ ├── [id] │ │ │ │ │ └── route.ts │ │ │ │ └── route.ts │ │ │ │ └── users │ │ │ │ └── [id] │ │ │ │ └── route.ts │ │ └── contexts │ │ │ ├── shared │ │ │ ├── domain │ │ │ │ ├── Collection.ts │ │ │ │ ├── Identifier.ts │ │ │ │ ├── Money.ts │ │ │ │ └── StringValueObject.ts │ │ │ └── infrastructure │ │ │ │ └── MariaDBConnection.ts │ │ │ └── shop │ │ │ ├── product_reviews │ │ │ ├── application │ │ │ │ ├── create │ │ │ │ │ └── ProductReviewCreator.ts │ │ │ │ └── search_by_product_id │ │ │ │ │ └── ProductReviewsByProductSearcher.ts │ │ │ ├── domain │ │ │ │ ├── ProductReview.ts │ │ │ │ ├── ProductReviewComment.ts │ │ │ │ ├── ProductReviewId.ts │ │ │ │ ├── ProductReviewRating.ts │ │ │ │ └── ProductReviewRepository.ts │ │ │ └── infrastructure │ │ │ │ └── MySqlProductReviewRepository.ts │ │ │ ├── products │ │ │ ├── application │ │ │ │ ├── create │ │ │ │ │ └── ProductCreator.ts │ │ │ │ ├── search │ │ │ │ │ └── ProductSearcher.ts │ │ │ │ └── search_all │ │ │ │ │ └── AllProductsSearcher.ts │ │ │ ├── domain │ │ │ │ ├── Product.ts │ │ │ │ ├── ProductFeaturedReview.ts │ │ │ │ ├── ProductId.ts │ │ │ │ ├── ProductImageUrl.ts │ │ │ │ ├── ProductImageUrls.ts │ │ │ │ ├── ProductName.ts │ │ │ │ ├── ProductRating.ts │ │ │ │ ├── ProductRepository.ts │ │ │ │ └── ProductTagId.ts │ │ │ └── infrastructure │ │ │ │ └── MySqlProductRepository.ts │ │ │ └── users │ │ │ ├── application │ │ │ ├── create │ │ │ │ └── UserRegistrar.ts │ │ │ ├── find │ │ │ │ └── UserFinder.ts │ │ │ └── search │ │ │ │ └── UserSearcher.ts │ │ │ ├── domain │ │ │ ├── User.ts │ │ │ ├── UserId.ts │ │ │ ├── UserName.ts │ │ │ ├── UserProfilePicture.ts │ │ │ └── UserRepository.ts │ │ │ └── infrastructure │ │ │ └── MySqlUserRepository.ts │ ├── tailwind.config.ts │ └── tsconfig.json │ └── 2-with_projections │ ├── .editorconfig │ ├── .eslintrc.json │ ├── .gitignore │ ├── Makefile │ ├── README.md │ ├── databases │ └── ecommerce.sql │ ├── docker-compose.yml │ ├── etc │ └── http │ │ ├── seller_backoffice │ │ ├── product-GET.http │ │ ├── product-PUT.http │ │ └── products-GET.http │ │ └── shop │ │ ├── product-GET.http │ │ ├── product_review-PUT.http │ │ ├── product_reviews-GET.http │ │ ├── products-GET.http │ │ ├── user-GET.http │ │ └── user-PUT.http │ ├── next.config.js │ ├── package-lock.json │ ├── package.json │ ├── postcss.config.js │ ├── public │ └── codely.svg │ ├── src │ ├── app │ │ └── api │ │ │ ├── seller_backoffice │ │ │ └── products │ │ │ │ ├── [id] │ │ │ │ └── route.ts │ │ │ │ └── route.ts │ │ │ └── shop │ │ │ ├── product_reviews │ │ │ ├── [id] │ │ │ │ └── route.ts │ │ │ └── route.ts │ │ │ ├── products │ │ │ ├── [id] │ │ │ │ └── route.ts │ │ │ └── route.ts │ │ │ └── users │ │ │ └── [id] │ │ │ └── route.ts │ └── contexts │ │ ├── seller_backoffice │ │ └── products │ │ │ ├── application │ │ │ ├── create │ │ │ │ └── ProductCreator.ts │ │ │ ├── search │ │ │ │ └── ProductSearcher.ts │ │ │ └── search_all │ │ │ │ └── AllProductsSearcher.ts │ │ │ ├── domain │ │ │ ├── Product.ts │ │ │ ├── ProductId.ts │ │ │ ├── ProductImageUrl.ts │ │ │ ├── ProductImageUrls.ts │ │ │ ├── ProductName.ts │ │ │ ├── ProductRepository.ts │ │ │ └── ProductViews.ts │ │ │ └── infrastructure │ │ │ └── MySqlProductRepository.ts │ │ ├── shared │ │ ├── domain │ │ │ ├── Collection.ts │ │ │ ├── Identifier.ts │ │ │ ├── Money.ts │ │ │ └── StringValueObject.ts │ │ └── infrastructure │ │ │ └── MariaDBConnection.ts │ │ └── shop │ │ ├── product_reviews │ │ ├── application │ │ │ ├── create │ │ │ │ └── ProductReviewCreator.ts │ │ │ └── search_by_product_id │ │ │ │ └── ProductReviewsByProductSearcher.ts │ │ ├── domain │ │ │ ├── ProductReview.ts │ │ │ ├── ProductReviewComment.ts │ │ │ ├── ProductReviewId.ts │ │ │ ├── ProductReviewRating.ts │ │ │ └── ProductReviewRepository.ts │ │ └── infrastructure │ │ │ └── MySqlProductReviewRepository.ts │ │ ├── products │ │ ├── application │ │ │ ├── search │ │ │ │ └── ProductSearcher.ts │ │ │ └── search_all │ │ │ │ └── AllProductsSearcher.ts │ │ ├── domain │ │ │ ├── Product.ts │ │ │ ├── ProductFeaturedReview.ts │ │ │ ├── ProductId.ts │ │ │ ├── ProductImageUrl.ts │ │ │ ├── ProductImageUrls.ts │ │ │ ├── ProductName.ts │ │ │ ├── ProductRating.ts │ │ │ └── ProductRepository.ts │ │ └── infrastructure │ │ │ └── MySqlProductRepository.ts │ │ └── users │ │ ├── application │ │ ├── create │ │ │ └── UserRegistrar.ts │ │ ├── find │ │ │ └── UserFinder.ts │ │ └── search │ │ │ └── UserSearcher.ts │ │ ├── domain │ │ ├── User.ts │ │ ├── UserId.ts │ │ ├── UserName.ts │ │ ├── UserProfilePicture.ts │ │ └── UserRepository.ts │ │ └── infrastructure │ │ └── MySqlUserRepository.ts │ ├── tailwind.config.ts │ └── tsconfig.json ├── 03-define_aggregates ├── 2-decrease_coupling_with_aggregates │ ├── 1-all_in_product │ │ ├── .editorconfig │ │ ├── .github │ │ │ └── workflows │ │ │ │ └── workflow.yml │ │ ├── .gitignore │ │ ├── Makefile │ │ ├── README.md │ │ ├── build.gradle │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── src │ │ │ ├── main │ │ │ │ ├── java │ │ │ │ │ └── tv │ │ │ │ │ │ └── codely │ │ │ │ │ │ └── ecommerce │ │ │ │ │ │ ├── product │ │ │ │ │ │ ├── application │ │ │ │ │ │ │ └── ProductReviewAdder.java │ │ │ │ │ │ └── domain │ │ │ │ │ │ │ ├── Product.java │ │ │ │ │ │ │ ├── ProductId.java │ │ │ │ │ │ │ ├── ProductName.java │ │ │ │ │ │ │ ├── ProductNotExist.java │ │ │ │ │ │ │ ├── ProductPrice.java │ │ │ │ │ │ │ ├── ProductRepository.java │ │ │ │ │ │ │ ├── ProductReview.java │ │ │ │ │ │ │ ├── ProductReviewComment.java │ │ │ │ │ │ │ ├── ProductReviewId.java │ │ │ │ │ │ │ └── ProductReviewRating.java │ │ │ │ │ │ └── user │ │ │ │ │ │ └── domain │ │ │ │ │ │ └── UserId.java │ │ │ │ └── resources │ │ │ │ │ └── log4j2.properties │ │ │ └── test │ │ │ │ ├── java │ │ │ │ └── tv │ │ │ │ │ └── codely │ │ │ │ │ └── ecommerce │ │ │ │ │ └── GreeterShould.java │ │ │ │ └── resources │ │ │ │ └── log4j2.properties │ │ └── var │ │ │ └── log │ │ │ └── .gitkeep │ └── 2-split_aggregate │ │ ├── .editorconfig │ │ ├── .github │ │ └── workflows │ │ │ └── workflow.yml │ │ ├── .gitignore │ │ ├── Makefile │ │ ├── README.md │ │ ├── build.gradle │ │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── tv │ │ │ │ │ └── codely │ │ │ │ │ └── ecommerce │ │ │ │ │ ├── product_reviews │ │ │ │ │ ├── application │ │ │ │ │ │ └── ProductReviewAdder.java │ │ │ │ │ └── domain │ │ │ │ │ │ ├── ProductReview.java │ │ │ │ │ │ ├── ProductReviewComment.java │ │ │ │ │ │ ├── ProductReviewId.java │ │ │ │ │ │ ├── ProductReviewRating.java │ │ │ │ │ │ └── ProductReviewRepository.java │ │ │ │ │ ├── products │ │ │ │ │ ├── application │ │ │ │ │ │ └── ProductFinder.java │ │ │ │ │ └── domain │ │ │ │ │ │ ├── Product.java │ │ │ │ │ │ ├── ProductId.java │ │ │ │ │ │ ├── ProductName.java │ │ │ │ │ │ ├── ProductNotExist.java │ │ │ │ │ │ ├── ProductPrice.java │ │ │ │ │ │ └── ProductRepository.java │ │ │ │ │ └── users │ │ │ │ │ └── domain │ │ │ │ │ └── UserId.java │ │ │ └── resources │ │ │ │ └── log4j2.properties │ │ └── test │ │ │ ├── java │ │ │ └── tv │ │ │ │ └── codely │ │ │ │ └── ecommerce │ │ │ │ └── GreeterShould.java │ │ │ └── resources │ │ │ └── log4j2.properties │ │ └── var │ │ └── log │ │ └── .gitkeep └── 3-domain_services_vs_aggregates │ ├── 1-in_user_case_methods │ ├── .editorconfig │ ├── .github │ │ └── workflows │ │ │ └── workflow.yml │ ├── .gitignore │ ├── Makefile │ ├── README.md │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── tv │ │ │ │ │ └── codely │ │ │ │ │ └── ecommerce │ │ │ │ │ ├── product_reviews │ │ │ │ │ ├── application │ │ │ │ │ │ └── ProductReviewAdder.java │ │ │ │ │ └── domain │ │ │ │ │ │ ├── ProductReview.java │ │ │ │ │ │ ├── ProductReviewComment.java │ │ │ │ │ │ ├── ProductReviewCommentIsTooLong.java │ │ │ │ │ │ ├── ProductReviewId.java │ │ │ │ │ │ ├── ProductReviewRating.java │ │ │ │ │ │ ├── ProductReviewRatingNotValid.java │ │ │ │ │ │ └── ProductReviewRepository.java │ │ │ │ │ ├── products │ │ │ │ │ ├── application │ │ │ │ │ │ └── ProductFinder.java │ │ │ │ │ └── domain │ │ │ │ │ │ ├── Product.java │ │ │ │ │ │ ├── ProductId.java │ │ │ │ │ │ ├── ProductName.java │ │ │ │ │ │ ├── ProductNotExist.java │ │ │ │ │ │ ├── ProductPrice.java │ │ │ │ │ │ └── ProductRepository.java │ │ │ │ │ └── users │ │ │ │ │ └── domain │ │ │ │ │ └── UserId.java │ │ │ └── resources │ │ │ │ └── log4j2.properties │ │ └── test │ │ │ ├── java │ │ │ └── tv │ │ │ │ └── codely │ │ │ │ └── ecommerce │ │ │ │ └── GreeterShould.java │ │ │ └── resources │ │ │ └── log4j2.properties │ └── var │ │ └── log │ │ └── .gitkeep │ ├── 2-in_domain_services │ ├── .editorconfig │ ├── .github │ │ └── workflows │ │ │ └── workflow.yml │ ├── .gitignore │ ├── Makefile │ ├── README.md │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── tv │ │ │ │ │ └── codely │ │ │ │ │ └── ecommerce │ │ │ │ │ ├── product_reviews │ │ │ │ │ ├── application │ │ │ │ │ │ └── ProductReviewAdder.java │ │ │ │ │ └── domain │ │ │ │ │ │ ├── ProductReview.java │ │ │ │ │ │ ├── ProductReviewComment.java │ │ │ │ │ │ ├── ProductReviewCommentEnsurer.java │ │ │ │ │ │ ├── ProductReviewCommentIsTooLong.java │ │ │ │ │ │ ├── ProductReviewId.java │ │ │ │ │ │ ├── ProductReviewRating.java │ │ │ │ │ │ ├── ProductReviewRatingEnsurer.java │ │ │ │ │ │ ├── ProductReviewRatingNotValid.java │ │ │ │ │ │ └── ProductReviewRepository.java │ │ │ │ │ ├── products │ │ │ │ │ ├── application │ │ │ │ │ │ └── ProductFinder.java │ │ │ │ │ └── domain │ │ │ │ │ │ ├── Product.java │ │ │ │ │ │ ├── ProductId.java │ │ │ │ │ │ ├── ProductName.java │ │ │ │ │ │ ├── ProductNotExist.java │ │ │ │ │ │ ├── ProductPrice.java │ │ │ │ │ │ └── ProductRepository.java │ │ │ │ │ └── users │ │ │ │ │ └── domain │ │ │ │ │ └── UserId.java │ │ │ └── resources │ │ │ │ └── log4j2.properties │ │ └── test │ │ │ ├── java │ │ │ └── tv │ │ │ │ └── codely │ │ │ │ └── ecommerce │ │ │ │ └── GreeterShould.java │ │ │ └── resources │ │ │ └── log4j2.properties │ └── var │ │ └── log │ │ └── .gitkeep │ ├── 3-all_in_domain_services │ ├── .editorconfig │ ├── .github │ │ └── workflows │ │ │ └── workflow.yml │ ├── .gitignore │ ├── Makefile │ ├── README.md │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── tv │ │ │ │ │ └── codely │ │ │ │ │ └── ecommerce │ │ │ │ │ ├── product_reviews │ │ │ │ │ ├── application │ │ │ │ │ │ └── ProductReviewAdder.java │ │ │ │ │ └── domain │ │ │ │ │ │ ├── ProductReview.java │ │ │ │ │ │ ├── ProductReviewComment.java │ │ │ │ │ │ ├── ProductReviewCommentEnsurer.java │ │ │ │ │ │ ├── ProductReviewCommentIsTooLong.java │ │ │ │ │ │ ├── ProductReviewEnsurer.java │ │ │ │ │ │ ├── ProductReviewId.java │ │ │ │ │ │ ├── ProductReviewRating.java │ │ │ │ │ │ ├── ProductReviewRatingEnsurer.java │ │ │ │ │ │ ├── ProductReviewRatingNotValid.java │ │ │ │ │ │ └── ProductReviewRepository.java │ │ │ │ │ ├── products │ │ │ │ │ ├── application │ │ │ │ │ │ └── ProductFinder.java │ │ │ │ │ └── domain │ │ │ │ │ │ ├── Product.java │ │ │ │ │ │ ├── ProductId.java │ │ │ │ │ │ ├── ProductName.java │ │ │ │ │ │ ├── ProductNotExist.java │ │ │ │ │ │ ├── ProductPrice.java │ │ │ │ │ │ └── ProductRepository.java │ │ │ │ │ └── users │ │ │ │ │ └── domain │ │ │ │ │ └── UserId.java │ │ │ └── resources │ │ │ │ └── log4j2.properties │ │ └── test │ │ │ ├── java │ │ │ └── tv │ │ │ │ └── codely │ │ │ │ └── ecommerce │ │ │ │ └── GreeterShould.java │ │ │ └── resources │ │ │ └── log4j2.properties │ ├── var │ │ └── log │ │ │ └── .gitkeep │ └── view_files_that_change_together.sh │ ├── 4-all_in_aggregate │ ├── .editorconfig │ ├── .github │ │ └── workflows │ │ │ └── workflow.yml │ ├── .gitignore │ ├── Makefile │ ├── README.md │ ├── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── tv │ │ │ │ │ └── codely │ │ │ │ │ └── ecommerce │ │ │ │ │ ├── product_reviews │ │ │ │ │ ├── application │ │ │ │ │ │ └── ProductReviewAdder.java │ │ │ │ │ └── domain │ │ │ │ │ │ ├── ProductReview.java │ │ │ │ │ │ ├── ProductReviewComment.java │ │ │ │ │ │ ├── ProductReviewCommentIsTooLong.java │ │ │ │ │ │ ├── ProductReviewId.java │ │ │ │ │ │ ├── ProductReviewRating.java │ │ │ │ │ │ ├── ProductReviewRatingNotValid.java │ │ │ │ │ │ └── ProductReviewRepository.java │ │ │ │ │ ├── products │ │ │ │ │ ├── application │ │ │ │ │ │ └── ProductFinder.java │ │ │ │ │ └── domain │ │ │ │ │ │ ├── Product.java │ │ │ │ │ │ ├── ProductId.java │ │ │ │ │ │ ├── ProductName.java │ │ │ │ │ │ ├── ProductNotExist.java │ │ │ │ │ │ ├── ProductPrice.java │ │ │ │ │ │ └── ProductRepository.java │ │ │ │ │ └── users │ │ │ │ │ └── domain │ │ │ │ │ └── UserId.java │ │ │ └── resources │ │ │ │ └── log4j2.properties │ │ └── test │ │ │ ├── java │ │ │ └── tv │ │ │ │ └── codely │ │ │ │ └── ecommerce │ │ │ │ └── GreeterShould.java │ │ │ └── resources │ │ │ └── log4j2.properties │ └── var │ │ └── log │ │ └── .gitkeep │ └── 5-in_aggregate_and_value_objects │ ├── .editorconfig │ ├── .github │ └── workflows │ │ └── workflow.yml │ ├── .gitignore │ ├── Makefile │ ├── README.md │ ├── build.gradle │ ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── src │ ├── main │ │ ├── java │ │ │ └── tv │ │ │ │ └── codely │ │ │ │ └── ecommerce │ │ │ │ ├── product_reviews │ │ │ │ ├── application │ │ │ │ │ └── ProductReviewAdder.java │ │ │ │ └── domain │ │ │ │ │ ├── ProductReview.java │ │ │ │ │ ├── ProductReviewComment.java │ │ │ │ │ ├── ProductReviewCommentIsTooLong.java │ │ │ │ │ ├── ProductReviewId.java │ │ │ │ │ ├── ProductReviewRating.java │ │ │ │ │ ├── ProductReviewRatingNotValid.java │ │ │ │ │ └── ProductReviewRepository.java │ │ │ │ ├── products │ │ │ │ ├── application │ │ │ │ │ └── ProductFinder.java │ │ │ │ └── domain │ │ │ │ │ ├── Product.java │ │ │ │ │ ├── ProductId.java │ │ │ │ │ ├── ProductName.java │ │ │ │ │ ├── ProductNotExist.java │ │ │ │ │ ├── ProductPrice.java │ │ │ │ │ └── ProductRepository.java │ │ │ │ └── users │ │ │ │ └── domain │ │ │ │ └── UserId.java │ │ └── resources │ │ │ └── log4j2.properties │ └── test │ │ ├── java │ │ └── tv │ │ │ └── codely │ │ │ └── ecommerce │ │ │ └── GreeterShould.java │ │ └── resources │ │ └── log4j2.properties │ └── var │ └── log │ └── .gitkeep ├── 04-good_practices ├── 1-polimorfism │ ├── composer.json │ ├── composer.lock │ ├── etc │ │ └── database.sql │ ├── src │ │ ├── Backoffice │ │ │ └── .gitkeep │ │ └── Shop │ │ │ ├── Bonus │ │ │ ├── Application │ │ │ │ └── SearchAll │ │ │ │ │ └── AllBonusesSearcher.php │ │ │ └── Domain │ │ │ │ ├── Bonus.php │ │ │ │ ├── BonusId.php │ │ │ │ ├── BonusRepository.php │ │ │ │ ├── BonusReward.php │ │ │ │ ├── DailyBonus.php │ │ │ │ ├── FirstSevenDaysStreakBonus.php │ │ │ │ ├── WelcomeBonus.php │ │ │ │ └── WelcomeBonusSticker.php │ │ │ ├── BonusUsage │ │ │ ├── Application │ │ │ │ └── .gitkeep │ │ │ ├── Domain │ │ │ │ └── .gitkeep │ │ │ └── Infrastructure │ │ │ │ └── .gitkeep │ │ │ └── Products │ │ │ ├── Application │ │ │ └── .gitkeep │ │ │ ├── Domain │ │ │ └── .gitkeep │ │ │ └── Infrastructure │ │ │ └── .gitkeep │ └── vendor │ │ ├── autoload.php │ │ └── composer │ │ ├── ClassLoader.php │ │ ├── InstalledVersions.php │ │ ├── LICENSE │ │ ├── autoload_classmap.php │ │ ├── autoload_namespaces.php │ │ ├── autoload_psr4.php │ │ ├── autoload_real.php │ │ ├── autoload_static.php │ │ ├── installed.json │ │ ├── installed.php │ │ └── platform_check.php └── 3-primitives │ ├── 1-without_primitives │ ├── .github │ │ └── workflows │ │ │ └── ci.yml │ ├── .gitignore │ ├── README.md │ ├── compose.yml │ ├── databases │ │ ├── 0-enable-pgvector.sql │ │ └── 1-mooc.sql │ ├── eslint.config.mjs │ ├── etc │ │ ├── courses.json │ │ ├── request │ │ │ └── mooc │ │ │ │ ├── course_progress.http │ │ │ │ └── courses.http │ │ ├── schemas │ │ │ └── com.codely.mooc.Course.avsc │ │ └── scripts │ │ │ ├── 1-list_topics.sh │ │ │ ├── 2-start_server.sh │ │ │ ├── 3-create_courses.sh │ │ │ ├── 4-consume.sh │ │ │ └── 5-compare_results.sql │ ├── jest.config.js │ ├── next.config.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── next.svg │ │ └── vercel.svg │ ├── src │ │ ├── app │ │ │ ├── api │ │ │ │ └── mooc │ │ │ │ │ └── courses │ │ │ │ │ └── [course-id] │ │ │ │ │ ├── rename │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ ├── favicon.ico │ │ │ ├── globals.css │ │ │ ├── layout.tsx │ │ │ └── scripts │ │ │ │ └── create-courses.ts │ │ └── contexts │ │ │ ├── mooc │ │ │ └── courses │ │ │ │ ├── application │ │ │ │ ├── add-category │ │ │ │ │ └── CourseCategoryAdder.ts │ │ │ │ ├── create │ │ │ │ │ └── CourseCreator.ts │ │ │ │ ├── delete │ │ │ │ │ └── CourseDeleter.ts │ │ │ │ ├── remove-category │ │ │ │ │ └── CourseCategoryRemover.ts │ │ │ │ ├── rename │ │ │ │ │ └── CourseRenamer.ts │ │ │ │ ├── resummarize │ │ │ │ │ └── CourseResummarizer.ts │ │ │ │ └── search-by-ids │ │ │ │ │ └── CoursesByIdsSearcher.ts │ │ │ │ ├── domain │ │ │ │ ├── Course.ts │ │ │ │ ├── CourseCategories.ts │ │ │ │ ├── CourseCategory.ts │ │ │ │ ├── CourseCategoryAddedDomainEvent.ts │ │ │ │ ├── CourseCategoryRemovedDomainEvent.ts │ │ │ │ ├── CourseCreatedDomainEvent.ts │ │ │ │ ├── CourseDeletedDomainEvent.ts │ │ │ │ ├── CourseDoesNotExistError.ts │ │ │ │ ├── CourseDomainEvent.ts │ │ │ │ ├── CourseId.ts │ │ │ │ ├── CourseName.ts │ │ │ │ ├── CourseRenamedDomainEvent.ts │ │ │ │ ├── CourseRepository.ts │ │ │ │ ├── CourseResponse.ts │ │ │ │ ├── CourseResummarizedDomainEvent.ts │ │ │ │ ├── CourseSummary.ts │ │ │ │ └── DomainCourseFinder.ts │ │ │ │ └── infrastructure │ │ │ │ └── PostgresCourseRepository.ts │ │ │ └── shared │ │ │ ├── application │ │ │ ├── DomainEventSubscriber.ts │ │ │ └── SnapshotProjector.ts │ │ │ ├── domain │ │ │ ├── AggregateRoot.ts │ │ │ ├── Clock.ts │ │ │ ├── DomainError.ts │ │ │ ├── EmailAddress.ts │ │ │ ├── Identifier.ts │ │ │ ├── NanoId.ts │ │ │ ├── NumberValueObject.ts │ │ │ ├── SnapshotPublisher.ts │ │ │ ├── StringValueObject.ts │ │ │ └── event │ │ │ │ ├── DomainEvent.ts │ │ │ │ ├── DomainEventClass.ts │ │ │ │ ├── DomainEventSubscriber.ts │ │ │ │ └── EventBus.ts │ │ │ └── infrastructure │ │ │ ├── dependency-injection │ │ │ └── diod.config.ts │ │ │ ├── domain-event │ │ │ └── InMemoryEventBus.ts │ │ │ ├── http │ │ │ ├── HttpNextResponse.ts │ │ │ └── executeWithErrorHandling.ts │ │ │ └── postgres │ │ │ ├── PostgresConnection.ts │ │ │ └── PostgresRepository.ts │ ├── tests │ │ └── contexts │ │ │ ├── mooc │ │ │ └── courses │ │ │ │ ├── application │ │ │ │ └── create │ │ │ │ │ └── CourseCreator.test.ts │ │ │ │ └── domain │ │ │ │ ├── CourseCategoriesMother.ts │ │ │ │ ├── CourseCategoryMother.ts │ │ │ │ ├── CourseCreatedDomainEventMother.ts │ │ │ │ ├── CourseIdMother.ts │ │ │ │ ├── CourseMother.ts │ │ │ │ ├── CourseNameMother.ts │ │ │ │ ├── CourseSummaryMother.ts │ │ │ │ └── MockCourseRepository.ts │ │ │ └── shared │ │ │ ├── domain │ │ │ ├── EmailAddressMother.ts │ │ │ └── EnumMother.ts │ │ │ └── infrastructure │ │ │ ├── MockClock.ts │ │ │ ├── MockEventBus.ts │ │ │ └── MockSnapshotPublisher.ts │ └── tsconfig.json │ └── 2-with_primitives │ ├── .github │ └── workflows │ │ └── ci.yml │ ├── .gitignore │ ├── README.md │ ├── compose.yml │ ├── databases │ ├── 0-enable-pgvector.sql │ └── 1-mooc.sql │ ├── eslint.config.mjs │ ├── etc │ ├── courses.json │ ├── request │ │ └── mooc │ │ │ ├── course_progress.http │ │ │ └── courses.http │ ├── schemas │ │ └── com.codely.mooc.Course.avsc │ └── scripts │ │ ├── 1-list_topics.sh │ │ ├── 2-start_server.sh │ │ ├── 3-create_courses.sh │ │ ├── 4-consume.sh │ │ └── 5-compare_results.sql │ ├── jest.config.js │ ├── next.config.js │ ├── package-lock.json │ ├── package.json │ ├── public │ ├── next.svg │ └── vercel.svg │ ├── src │ ├── app │ │ ├── api │ │ │ └── mooc │ │ │ │ └── courses │ │ │ │ └── [course-id] │ │ │ │ ├── rename │ │ │ │ └── route.ts │ │ │ │ └── route.ts │ │ ├── favicon.ico │ │ ├── globals.css │ │ ├── layout.tsx │ │ └── scripts │ │ │ └── create-courses.ts │ └── contexts │ │ ├── mooc │ │ └── courses │ │ │ ├── application │ │ │ ├── add-category │ │ │ │ └── CourseCategoryAdder.ts │ │ │ ├── create │ │ │ │ └── CourseCreator.ts │ │ │ ├── delete │ │ │ │ └── CourseDeleter.ts │ │ │ ├── remove-category │ │ │ │ └── CourseCategoryRemover.ts │ │ │ ├── rename │ │ │ │ └── CourseRenamer.ts │ │ │ ├── resummarize │ │ │ │ └── CourseResummarizer.ts │ │ │ └── search-by-ids │ │ │ │ └── CoursesByIdsSearcher.ts │ │ │ ├── domain │ │ │ ├── Course.ts │ │ │ ├── CourseCategories.ts │ │ │ ├── CourseCategory.ts │ │ │ ├── CourseCategoryAddedDomainEvent.ts │ │ │ ├── CourseCategoryRemovedDomainEvent.ts │ │ │ ├── CourseCreatedDomainEvent.ts │ │ │ ├── CourseDeletedDomainEvent.ts │ │ │ ├── CourseDoesNotExistError.ts │ │ │ ├── CourseDomainEvent.ts │ │ │ ├── CourseId.ts │ │ │ ├── CourseName.ts │ │ │ ├── CourseRenamedDomainEvent.ts │ │ │ ├── CourseRepository.ts │ │ │ ├── CourseResponse.ts │ │ │ ├── CourseResummarizedDomainEvent.ts │ │ │ ├── CourseSummary.ts │ │ │ └── DomainCourseFinder.ts │ │ │ └── infrastructure │ │ │ └── PostgresCourseRepository.ts │ │ └── shared │ │ ├── application │ │ ├── DomainEventSubscriber.ts │ │ └── SnapshotProjector.ts │ │ ├── domain │ │ ├── AggregateRoot.ts │ │ ├── Clock.ts │ │ ├── DomainError.ts │ │ ├── EmailAddress.ts │ │ ├── Identifier.ts │ │ ├── NanoId.ts │ │ ├── NumberValueObject.ts │ │ ├── SnapshotPublisher.ts │ │ ├── StringValueObject.ts │ │ └── event │ │ │ ├── DomainEvent.ts │ │ │ ├── DomainEventClass.ts │ │ │ ├── DomainEventSubscriber.ts │ │ │ └── EventBus.ts │ │ └── infrastructure │ │ ├── dependency-injection │ │ └── diod.config.ts │ │ ├── domain-event │ │ └── InMemoryEventBus.ts │ │ ├── http │ │ ├── HttpNextResponse.ts │ │ └── executeWithErrorHandling.ts │ │ └── postgres │ │ ├── PostgresConnection.ts │ │ └── PostgresRepository.ts │ ├── tests │ └── contexts │ │ ├── mooc │ │ └── courses │ │ │ ├── application │ │ │ └── create │ │ │ │ └── CourseCreator.test.ts │ │ │ └── domain │ │ │ ├── CourseCategoriesMother.ts │ │ │ ├── CourseCategoryMother.ts │ │ │ ├── CourseCreatedDomainEventMother.ts │ │ │ ├── CourseIdMother.ts │ │ │ ├── CourseMother.ts │ │ │ ├── CourseNameMother.ts │ │ │ ├── CourseSummaryMother.ts │ │ │ └── MockCourseRepository.ts │ │ └── shared │ │ ├── domain │ │ ├── EmailAddressMother.ts │ │ └── EnumMother.ts │ │ └── infrastructure │ │ ├── MockClock.ts │ │ ├── MockEventBus.ts │ │ └── MockSnapshotPublisher.ts │ └── tsconfig.json ├── 05-modeling └── 1-promote_module_to_bc │ ├── 1-before_promoting_module_to_bc │ └── shop │ │ ├── order_lines │ │ └── .gitkeep │ │ ├── orders │ │ └── .gitkeep │ │ ├── product_reviews │ │ └── .gitkeep │ │ ├── product_stats │ │ └── .gitkeep │ │ ├── products │ │ └── .gitkeep │ │ └── users │ │ └── .gitkeep │ └── 2-after_promoting_module_to_bc │ ├── products │ ├── products │ │ └── Product │ ├── reviews │ │ └── .gitkeep │ └── stats │ │ └── .gitkeep │ └── shop │ ├── order_lines │ └── .gitkeep │ ├── orders │ └── .gitkeep │ ├── products │ └── ShopProduct │ └── users │ └── .gitkeep ├── 06-common_problems └── 4-ids_from_outside │ ├── .github │ └── workflows │ │ └── ci.yml │ ├── .gitignore │ ├── README.md │ ├── compose.yml │ ├── databases │ ├── 0-enable-extensions.sql │ └── 1-mooc.sql │ ├── eslint.config.mjs │ ├── etc │ ├── config │ │ └── claude_desktop_config.json │ ├── integrate │ │ ├── 1-jetbrains_ai.md │ │ ├── 2-jetbrains_junie.json │ │ ├── 3-cursor.json │ │ ├── 4-claude.json │ │ └── 5-vscode.json │ ├── ollama │ │ ├── ollama-entrypoint.sh │ │ └── ollama-healthcheck.sh │ ├── request │ │ └── mooc │ │ │ ├── course_progress.http │ │ │ └── courses.http │ └── scripts │ │ ├── 1-start.sh │ │ ├── 2-create_courses.sh │ │ └── 3-inspect.sh │ ├── jest.config.js │ ├── next.config.js │ ├── package-lock.json │ ├── package.json │ ├── public │ ├── next.svg │ └── vercel.svg │ ├── src │ ├── app │ │ ├── api │ │ │ └── mooc │ │ │ │ ├── course-progress │ │ │ │ └── route.ts │ │ │ │ ├── courses │ │ │ │ ├── [id] │ │ │ │ │ └── route.ts │ │ │ │ ├── by-similar-name │ │ │ │ │ └── route.ts │ │ │ │ ├── paginated │ │ │ │ │ └── route.ts │ │ │ │ ├── route.ts │ │ │ │ └── similar-to-courses │ │ │ │ │ └── route.ts │ │ │ │ ├── invoices │ │ │ │ ├── [invoice_id] │ │ │ │ │ └── route.ts │ │ │ │ └── by-serie-and-number │ │ │ │ │ └── [serie_number] │ │ │ │ │ └── route.ts │ │ │ │ └── users │ │ │ │ └── [user-id] │ │ │ │ └── route.ts │ │ ├── favicon.ico │ │ ├── globals.css │ │ ├── layout.tsx │ │ └── scripts │ │ │ ├── courses.json │ │ │ └── create-courses.ts │ └── contexts │ │ ├── mooc │ │ ├── courses │ │ │ ├── application │ │ │ │ ├── find-by-similar-name │ │ │ │ │ └── CourseBySimilarNameFinder.ts │ │ │ │ ├── find │ │ │ │ │ └── CourseFinder.ts │ │ │ │ ├── search-all-paginated │ │ │ │ │ └── AllCoursesPaginatedSearcher.ts │ │ │ │ ├── search-all │ │ │ │ │ └── AllCoursesSearcher.ts │ │ │ │ ├── search-by-ids │ │ │ │ │ └── CoursesByIdsSearcher.ts │ │ │ │ ├── search-similar-by-ids │ │ │ │ │ └── SimilarCoursesByIdsSearcher.ts │ │ │ │ └── search │ │ │ │ │ └── CourseSearcher.ts │ │ │ ├── domain │ │ │ │ ├── Course.ts │ │ │ │ ├── CourseBySimilarNameNotFoundError.ts │ │ │ │ ├── CourseId.ts │ │ │ │ ├── CourseNotFoundError.ts │ │ │ │ └── CourseRepository.ts │ │ │ └── infrastructure │ │ │ │ └── PostgresCourseRepository.ts │ │ ├── invoices │ │ │ ├── application │ │ │ │ ├── create │ │ │ │ │ └── InvoiceCreator.ts │ │ │ │ └── search-by-serie-and-number │ │ │ │ │ └── InvoiceBySerieAndNumberSearcher.ts │ │ │ ├── domain │ │ │ │ ├── Invoice.ts │ │ │ │ ├── InvoiceAmount.ts │ │ │ │ ├── InvoiceId.ts │ │ │ │ ├── InvoiceNumber.ts │ │ │ │ ├── InvoiceRepository.ts │ │ │ │ ├── InvoiceSerie.ts │ │ │ │ └── InvoiceVatId.ts │ │ │ └── infrastructure │ │ │ │ └── PostgresInvoiceRepository.ts │ │ ├── user-course-progress │ │ │ ├── application │ │ │ │ └── complete │ │ │ │ │ └── UserCourseProgressCompleter.ts │ │ │ └── domain │ │ │ │ └── UserCourseProgressCompletedDomainEvent.ts │ │ ├── user-course-suggestions │ │ │ ├── application │ │ │ │ ├── generate │ │ │ │ │ ├── GenerateUserCourseSuggestionsOnUserCourseProgressCompleted.ts │ │ │ │ │ └── UserCourseSuggestionsGenerator.ts │ │ │ │ └── search │ │ │ │ │ └── UserCourseSuggestionsSearcher.ts │ │ │ ├── domain │ │ │ │ ├── CourseSuggestion.ts │ │ │ │ ├── CourseSuggestionsGenerator.ts │ │ │ │ ├── UserCourseSuggestions.ts │ │ │ │ ├── UserCourseSuggestionsGeneratedDomainEvent.ts │ │ │ │ └── UserCourseSuggestionsRepository.ts │ │ │ └── infrastructure │ │ │ │ ├── OllamaCourseSuggestionsGenerator.ts │ │ │ │ └── PostgresUserCourseSuggestionsRepository.ts │ │ └── users │ │ │ ├── application │ │ │ ├── find │ │ │ │ └── UserFinder.ts │ │ │ ├── registrar │ │ │ │ └── UserRegistrar.ts │ │ │ └── update-course-suggestions │ │ │ │ ├── UpdateUserCourseSuggestionsOnUserCourseSuggestionsGenerated.ts │ │ │ │ └── UserCourseSuggestionsUpdater.ts │ │ │ ├── domain │ │ │ ├── CoursesSuggestionLlm.ts │ │ │ ├── DomainUserFinder.ts │ │ │ ├── User.ts │ │ │ ├── UserBio.ts │ │ │ ├── UserDoesNotExistError.ts │ │ │ ├── UserDomainEvent.ts │ │ │ ├── UserEmail.ts │ │ │ ├── UserId.ts │ │ │ ├── UserName.ts │ │ │ ├── UserRegisteredDomainEvent.ts │ │ │ └── UserRepository.ts │ │ │ └── infrastructure │ │ │ ├── InMemoryCacheUserRepository.ts │ │ │ └── PostgresUserRepository.ts │ │ └── shared │ │ ├── domain │ │ ├── AggregateRoot.ts │ │ ├── Clock.ts │ │ ├── CodelyError.ts │ │ ├── DomainError.ts │ │ ├── EmailAddress.ts │ │ ├── Identifier.ts │ │ ├── InvalidBase64Error.ts │ │ ├── InvalidNanoIdError.ts │ │ ├── NanoId.ts │ │ ├── NumberValueObject.ts │ │ ├── StringValueObject.ts │ │ ├── assertNever.ts │ │ └── event │ │ │ ├── DomainEvent.ts │ │ │ ├── DomainEventClass.ts │ │ │ ├── DomainEventSubscriber.ts │ │ │ └── EventBus.ts │ │ └── infrastructure │ │ ├── dependency-injection │ │ └── diod.config.ts │ │ ├── domain-event │ │ └── InMemoryEventBus.ts │ │ ├── http │ │ ├── HttpNextResponse.ts │ │ ├── executeWithErrorHandling.ts │ │ └── withErrorHandling.ts │ │ └── postgres │ │ ├── PostgresConnection.ts │ │ └── PostgresRepository.ts │ ├── start-mcp-debug.sh │ ├── tests │ ├── app │ │ └── api │ │ │ └── mooc │ │ │ └── courses │ │ │ └── CoursesGet.test.ts │ ├── contexts │ │ ├── mooc │ │ │ ├── courses-progress │ │ │ │ └── domain │ │ │ │ │ └── CourseProgressFinishedDomainEventMother.ts │ │ │ ├── courses │ │ │ │ ├── application │ │ │ │ │ ├── find-by-similar-name │ │ │ │ │ │ └── CourseBySimilarNameFinder.test.ts │ │ │ │ │ ├── find │ │ │ │ │ │ └── CourseFinder.test.ts │ │ │ │ │ ├── search-all-paginated │ │ │ │ │ │ └── AllCoursesPaginatedSearcher.test.ts │ │ │ │ │ ├── search-all │ │ │ │ │ │ └── AllCoursesSearcher.test.ts │ │ │ │ │ ├── search-similar-by-ids │ │ │ │ │ │ └── SimilarCoursesByIdsSearcher.test.ts │ │ │ │ │ └── search │ │ │ │ │ │ └── CourseSearcher.test.ts │ │ │ │ ├── domain │ │ │ │ │ ├── CourseIdMother.ts │ │ │ │ │ └── CourseMother.ts │ │ │ │ └── infrastructure │ │ │ │ │ ├── MockCourseRepository.ts │ │ │ │ │ └── PostgresCourseRepository.test.ts │ │ │ ├── invoices │ │ │ │ ├── application │ │ │ │ │ ├── create │ │ │ │ │ │ └── InvoiceCreator.test.ts │ │ │ │ │ └── search-by-serie-and-number │ │ │ │ │ │ └── InvoiceBySerieAndNumberSearcher.test.ts │ │ │ │ ├── domain │ │ │ │ │ ├── InvoiceAmountMother.ts │ │ │ │ │ ├── InvoiceIdMother.ts │ │ │ │ │ ├── InvoiceMother.ts │ │ │ │ │ ├── InvoiceNumberMother.ts │ │ │ │ │ ├── InvoiceSerieMother.ts │ │ │ │ │ └── InvoiceVatIdMother.ts │ │ │ │ └── infrastructure │ │ │ │ │ ├── MockInvoiceRepository.ts │ │ │ │ │ └── PostgresInvoiceRepository.test.ts │ │ │ ├── user-course-suggestions │ │ │ │ ├── domain │ │ │ │ │ ├── CourseSuggestionMother.ts │ │ │ │ │ └── UserCourseSuggestionsMother.ts │ │ │ │ └── infrastructure │ │ │ │ │ └── OllamaCourseSuggestionsGenerator.test.ts │ │ │ └── users │ │ │ │ ├── application │ │ │ │ └── registrar │ │ │ │ │ └── UserRegistrar.test.ts │ │ │ │ ├── domain │ │ │ │ ├── DateMother.ts │ │ │ │ ├── UserBioMother.ts │ │ │ │ ├── UserEmailMother.ts │ │ │ │ ├── UserIdMother.ts │ │ │ │ ├── UserMother.ts │ │ │ │ ├── UserNameMother.ts │ │ │ │ └── UserRegisteredDomainEventMother.ts │ │ │ │ └── infrastructure │ │ │ │ ├── MockCoursesSuggestionLlm.ts │ │ │ │ ├── MockUserRepository.ts │ │ │ │ └── PostgresUserRepository.test.ts │ │ └── shared │ │ │ ├── domain │ │ │ ├── EmailAddressMother.ts │ │ │ └── EnumMother.ts │ │ │ └── infrastructure │ │ │ ├── MockClock.ts │ │ │ ├── MockEventBus.ts │ │ │ └── evaluatePrompt.ts │ └── utils │ │ └── TestServerManager.ts │ └── tsconfig.json ├── 08-next_steps └── 1-design_canvas │ ├── .github │ └── workflows │ │ └── ci.yml │ ├── .gitignore │ ├── README.md │ ├── compose.yml │ ├── databases │ ├── 0-enable-pgvector.sql │ └── 1-mooc.sql │ ├── eslint.config.mjs │ ├── etc │ ├── courses.json │ ├── prompts │ │ └── codely-design-blueprint.md │ ├── request │ │ └── mooc │ │ │ ├── course_progress.http │ │ │ └── courses.http │ ├── schemas │ │ └── com.codely.mooc.Course.avsc │ └── scripts │ │ ├── 1-list_topics.sh │ │ ├── 2-start_server.sh │ │ ├── 3-create_courses.sh │ │ ├── 4-consume.sh │ │ └── 5-compare_results.sql │ ├── jest.config.js │ ├── next.config.js │ ├── package-lock.json │ ├── package.json │ ├── public │ ├── next.svg │ └── vercel.svg │ ├── src │ ├── app │ │ ├── api │ │ │ └── mooc │ │ │ │ └── courses │ │ │ │ └── [course-id] │ │ │ │ ├── rename │ │ │ │ └── route.ts │ │ │ │ └── route.ts │ │ ├── favicon.ico │ │ ├── globals.css │ │ ├── layout.tsx │ │ └── scripts │ │ │ └── create-courses.ts │ └── contexts │ │ ├── mooc │ │ └── courses │ │ │ ├── application │ │ │ ├── add-category │ │ │ │ └── CourseCategoryAdder.ts │ │ │ ├── create │ │ │ │ └── CourseCreator.ts │ │ │ ├── delete │ │ │ │ └── CourseDeleter.ts │ │ │ ├── remove-category │ │ │ │ └── CourseCategoryRemover.ts │ │ │ ├── rename │ │ │ │ └── CourseRenamer.ts │ │ │ ├── resummarize │ │ │ │ └── CourseResummarizer.ts │ │ │ └── search │ │ │ │ └── CourseSearcher.ts │ │ │ ├── domain │ │ │ ├── Course.ts │ │ │ ├── CourseCategories.ts │ │ │ ├── CourseCategory.ts │ │ │ ├── CourseCategoryAddedDomainEvent.ts │ │ │ ├── CourseCategoryRemovedDomainEvent.ts │ │ │ ├── CourseCreatedDomainEvent.ts │ │ │ ├── CourseDeletedDomainEvent.ts │ │ │ ├── CourseDoesNotExistError.ts │ │ │ ├── CourseDomainEvent.ts │ │ │ ├── CourseId.ts │ │ │ ├── CourseName.ts │ │ │ ├── CourseRenamedDomainEvent.ts │ │ │ ├── CourseRepository.ts │ │ │ ├── CourseResponse.ts │ │ │ ├── CourseResummarizedDomainEvent.ts │ │ │ ├── CourseSummary.ts │ │ │ └── DomainCourseFinder.ts │ │ │ └── infrastructure │ │ │ └── PostgresCourseRepository.ts │ │ └── shared │ │ ├── application │ │ ├── DomainEventSubscriber.ts │ │ └── SnapshotProjector.ts │ │ ├── domain │ │ ├── AggregateRoot.ts │ │ ├── Clock.ts │ │ ├── DomainError.ts │ │ ├── EmailAddress.ts │ │ ├── Identifier.ts │ │ ├── NanoId.ts │ │ ├── NumberValueObject.ts │ │ ├── SnapshotPublisher.ts │ │ ├── StringValueObject.ts │ │ └── event │ │ │ ├── DomainEvent.ts │ │ │ ├── DomainEventClass.ts │ │ │ ├── DomainEventSubscriber.ts │ │ │ └── EventBus.ts │ │ └── infrastructure │ │ ├── dependency-injection │ │ └── diod.config.ts │ │ ├── domain-event │ │ └── InMemoryEventBus.ts │ │ ├── http │ │ ├── HttpNextResponse.ts │ │ └── executeWithErrorHandling.ts │ │ └── postgres │ │ ├── PostgresConnection.ts │ │ └── PostgresRepository.ts │ ├── tests │ └── contexts │ │ ├── mooc │ │ └── courses │ │ │ ├── application │ │ │ ├── create │ │ │ │ └── CourseCreator.test.ts │ │ │ ├── resummarize │ │ │ │ └── CourseResummarizer.test.ts │ │ │ └── search │ │ │ │ └── CourseSearcher.test.ts │ │ │ └── domain │ │ │ ├── CourseCategoriesMother.ts │ │ │ ├── CourseCategoryMother.ts │ │ │ ├── CourseCreatedDomainEventMother.ts │ │ │ ├── CourseIdMother.ts │ │ │ ├── CourseMother.ts │ │ │ ├── CourseNameMother.ts │ │ │ ├── CourseResummarizedDomainEventMother.ts │ │ │ ├── CourseSummaryMother.ts │ │ │ └── MockCourseRepository.ts │ │ └── shared │ │ ├── domain │ │ ├── EmailAddressMother.ts │ │ └── EnumMother.ts │ │ └── infrastructure │ │ ├── MockClock.ts │ │ ├── MockEventBus.ts │ │ └── MockSnapshotPublisher.ts │ └── tsconfig.json ├── LICENSE └── README.md /02-tiny_aggregates/3-view_projections/1-without_projections/.editorconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/.editorconfig -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/.eslintrc.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/.eslintrc.json -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/.gitignore -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/Makefile: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/README.md -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/databases/ecommerce.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/databases/ecommerce.sql -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/docker-compose.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/docker-compose.yml -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/etc/http/product-GET.http: -------------------------------------------------------------------------------- 1 | GET http://localhost:3000/api/products/1f2a73e3-e0e9-4418-8a53-d080871b24b3 2 | -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/etc/http/product-PUT.http: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/etc/http/product-PUT.http -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/etc/http/product_review-PUT.http: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/etc/http/product_review-PUT.http -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/etc/http/product_reviews-GET.http: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/etc/http/product_reviews-GET.http -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/etc/http/products-GET.http: -------------------------------------------------------------------------------- 1 | GET http://localhost:3000/api/products 2 | -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/etc/http/user-GET.http: -------------------------------------------------------------------------------- 1 | GET http://localhost:3000/api/users/1ec0b8ee-dbdc-48f6-ae5a-bfb99bee5e27 2 | -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/etc/http/user-PUT.http: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/etc/http/user-PUT.http -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/next.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/next.config.js -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/package-lock.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/package-lock.json -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/package.json -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/postcss.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/postcss.config.js -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/public/codely.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/public/codely.svg -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/src/app/api/product_reviews/[id]/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/src/app/api/product_reviews/[id]/route.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/src/app/api/product_reviews/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/src/app/api/product_reviews/route.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/src/app/api/products/[id]/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/src/app/api/products/[id]/route.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/src/app/api/products/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/src/app/api/products/route.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/src/app/api/users/[id]/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/src/app/api/users/[id]/route.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shared/domain/Collection.ts: -------------------------------------------------------------------------------- 1 | export abstract class Collection { 2 | constructor(public readonly value: T[]) {} 3 | } 4 | -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shared/domain/Identifier.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shared/domain/Identifier.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shared/domain/Money.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shared/domain/Money.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shared/domain/StringValueObject.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shared/domain/StringValueObject.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shared/infrastructure/MariaDBConnection.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shared/infrastructure/MariaDBConnection.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/product_reviews/domain/ProductReview.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/product_reviews/domain/ProductReview.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/products/domain/Product.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/products/domain/Product.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/products/domain/ProductFeaturedReview.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/products/domain/ProductFeaturedReview.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/products/domain/ProductId.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/products/domain/ProductId.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/products/domain/ProductImageUrl.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/products/domain/ProductImageUrl.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/products/domain/ProductImageUrls.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/products/domain/ProductImageUrls.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/products/domain/ProductName.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/products/domain/ProductName.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/products/domain/ProductRating.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/products/domain/ProductRating.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/products/domain/ProductRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/products/domain/ProductRepository.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/products/domain/ProductTagId.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/products/domain/ProductTagId.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/users/application/find/UserFinder.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/users/application/find/UserFinder.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/users/application/search/UserSearcher.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/users/application/search/UserSearcher.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/users/domain/User.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/users/domain/User.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/users/domain/UserId.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/users/domain/UserId.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/users/domain/UserName.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/users/domain/UserName.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/users/domain/UserProfilePicture.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/users/domain/UserProfilePicture.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/users/domain/UserRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/src/contexts/shop/users/domain/UserRepository.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/tailwind.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/tailwind.config.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/1-without_projections/tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/1-without_projections/tsconfig.json -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/.editorconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/.editorconfig -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/.eslintrc.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/.eslintrc.json -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/.gitignore -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/Makefile: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/README.md -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/databases/ecommerce.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/databases/ecommerce.sql -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/docker-compose.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/docker-compose.yml -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/etc/http/seller_backoffice/product-GET.http: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/etc/http/seller_backoffice/product-GET.http -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/etc/http/seller_backoffice/product-PUT.http: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/etc/http/seller_backoffice/product-PUT.http -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/etc/http/seller_backoffice/products-GET.http: -------------------------------------------------------------------------------- 1 | GET http://localhost:3000/api/seller_backoffice/products 2 | -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/etc/http/shop/product-GET.http: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/etc/http/shop/product-GET.http -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/etc/http/shop/product_review-PUT.http: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/etc/http/shop/product_review-PUT.http -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/etc/http/shop/product_reviews-GET.http: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/etc/http/shop/product_reviews-GET.http -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/etc/http/shop/products-GET.http: -------------------------------------------------------------------------------- 1 | GET http://localhost:3000/api/shop/products 2 | -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/etc/http/shop/user-GET.http: -------------------------------------------------------------------------------- 1 | GET http://localhost:3000/api/shop/users/1ec0b8ee-dbdc-48f6-ae5a-bfb99bee5e27 2 | -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/etc/http/shop/user-PUT.http: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/etc/http/shop/user-PUT.http -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/next.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/next.config.js -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/package-lock.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/package-lock.json -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/package.json -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/postcss.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/postcss.config.js -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/public/codely.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/public/codely.svg -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/app/api/seller_backoffice/products/[id]/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/app/api/seller_backoffice/products/[id]/route.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/app/api/seller_backoffice/products/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/app/api/seller_backoffice/products/route.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/app/api/shop/product_reviews/[id]/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/app/api/shop/product_reviews/[id]/route.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/app/api/shop/product_reviews/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/app/api/shop/product_reviews/route.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/app/api/shop/products/[id]/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/app/api/shop/products/[id]/route.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/app/api/shop/products/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/app/api/shop/products/route.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/app/api/shop/users/[id]/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/app/api/shop/users/[id]/route.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/seller_backoffice/products/domain/Product.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/seller_backoffice/products/domain/Product.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/seller_backoffice/products/domain/ProductId.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/seller_backoffice/products/domain/ProductId.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/seller_backoffice/products/domain/ProductName.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/seller_backoffice/products/domain/ProductName.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shared/domain/Collection.ts: -------------------------------------------------------------------------------- 1 | export abstract class Collection { 2 | constructor(public readonly value: T[]) {} 3 | } 4 | -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shared/domain/Identifier.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shared/domain/Identifier.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shared/domain/Money.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shared/domain/Money.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shared/domain/StringValueObject.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shared/domain/StringValueObject.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shared/infrastructure/MariaDBConnection.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shared/infrastructure/MariaDBConnection.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/product_reviews/domain/ProductReview.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/product_reviews/domain/ProductReview.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/product_reviews/domain/ProductReviewId.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/product_reviews/domain/ProductReviewId.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/products/domain/Product.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/products/domain/Product.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/products/domain/ProductFeaturedReview.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/products/domain/ProductFeaturedReview.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/products/domain/ProductId.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/products/domain/ProductId.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/products/domain/ProductImageUrl.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/products/domain/ProductImageUrl.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/products/domain/ProductImageUrls.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/products/domain/ProductImageUrls.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/products/domain/ProductName.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/products/domain/ProductName.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/products/domain/ProductRating.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/products/domain/ProductRating.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/products/domain/ProductRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/products/domain/ProductRepository.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/users/application/create/UserRegistrar.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/users/application/create/UserRegistrar.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/users/application/find/UserFinder.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/users/application/find/UserFinder.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/users/application/search/UserSearcher.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/users/application/search/UserSearcher.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/users/domain/User.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/users/domain/User.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/users/domain/UserId.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/users/domain/UserId.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/users/domain/UserName.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/users/domain/UserName.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/users/domain/UserProfilePicture.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/users/domain/UserProfilePicture.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/users/domain/UserRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/users/domain/UserRepository.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/users/infrastructure/MySqlUserRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/src/contexts/shop/users/infrastructure/MySqlUserRepository.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/tailwind.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/tailwind.config.ts -------------------------------------------------------------------------------- /02-tiny_aggregates/3-view_projections/2-with_projections/tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/02-tiny_aggregates/3-view_projections/2-with_projections/tsconfig.json -------------------------------------------------------------------------------- /03-define_aggregates/2-decrease_coupling_with_aggregates/1-all_in_product/.editorconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/2-decrease_coupling_with_aggregates/1-all_in_product/.editorconfig -------------------------------------------------------------------------------- /03-define_aggregates/2-decrease_coupling_with_aggregates/1-all_in_product/.github/workflows/workflow.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/2-decrease_coupling_with_aggregates/1-all_in_product/.github/workflows/workflow.yml -------------------------------------------------------------------------------- /03-define_aggregates/2-decrease_coupling_with_aggregates/1-all_in_product/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/2-decrease_coupling_with_aggregates/1-all_in_product/.gitignore -------------------------------------------------------------------------------- /03-define_aggregates/2-decrease_coupling_with_aggregates/1-all_in_product/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/2-decrease_coupling_with_aggregates/1-all_in_product/Makefile -------------------------------------------------------------------------------- /03-define_aggregates/2-decrease_coupling_with_aggregates/1-all_in_product/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/2-decrease_coupling_with_aggregates/1-all_in_product/README.md -------------------------------------------------------------------------------- /03-define_aggregates/2-decrease_coupling_with_aggregates/1-all_in_product/build.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/2-decrease_coupling_with_aggregates/1-all_in_product/build.gradle -------------------------------------------------------------------------------- /03-define_aggregates/2-decrease_coupling_with_aggregates/1-all_in_product/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/2-decrease_coupling_with_aggregates/1-all_in_product/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /03-define_aggregates/2-decrease_coupling_with_aggregates/1-all_in_product/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/2-decrease_coupling_with_aggregates/1-all_in_product/gradle/wrapper/gradle-wrapper.properties -------------------------------------------------------------------------------- /03-define_aggregates/2-decrease_coupling_with_aggregates/1-all_in_product/gradlew: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/2-decrease_coupling_with_aggregates/1-all_in_product/gradlew -------------------------------------------------------------------------------- /03-define_aggregates/2-decrease_coupling_with_aggregates/1-all_in_product/gradlew.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/2-decrease_coupling_with_aggregates/1-all_in_product/gradlew.bat -------------------------------------------------------------------------------- /03-define_aggregates/2-decrease_coupling_with_aggregates/1-all_in_product/src/main/resources/log4j2.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/2-decrease_coupling_with_aggregates/1-all_in_product/src/main/resources/log4j2.properties -------------------------------------------------------------------------------- /03-define_aggregates/2-decrease_coupling_with_aggregates/1-all_in_product/src/test/resources/log4j2.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/2-decrease_coupling_with_aggregates/1-all_in_product/src/test/resources/log4j2.properties -------------------------------------------------------------------------------- /03-define_aggregates/2-decrease_coupling_with_aggregates/1-all_in_product/var/log/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /03-define_aggregates/2-decrease_coupling_with_aggregates/2-split_aggregate/.editorconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/2-decrease_coupling_with_aggregates/2-split_aggregate/.editorconfig -------------------------------------------------------------------------------- /03-define_aggregates/2-decrease_coupling_with_aggregates/2-split_aggregate/.github/workflows/workflow.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/2-decrease_coupling_with_aggregates/2-split_aggregate/.github/workflows/workflow.yml -------------------------------------------------------------------------------- /03-define_aggregates/2-decrease_coupling_with_aggregates/2-split_aggregate/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/2-decrease_coupling_with_aggregates/2-split_aggregate/.gitignore -------------------------------------------------------------------------------- /03-define_aggregates/2-decrease_coupling_with_aggregates/2-split_aggregate/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/2-decrease_coupling_with_aggregates/2-split_aggregate/Makefile -------------------------------------------------------------------------------- /03-define_aggregates/2-decrease_coupling_with_aggregates/2-split_aggregate/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/2-decrease_coupling_with_aggregates/2-split_aggregate/README.md -------------------------------------------------------------------------------- /03-define_aggregates/2-decrease_coupling_with_aggregates/2-split_aggregate/build.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/2-decrease_coupling_with_aggregates/2-split_aggregate/build.gradle -------------------------------------------------------------------------------- /03-define_aggregates/2-decrease_coupling_with_aggregates/2-split_aggregate/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/2-decrease_coupling_with_aggregates/2-split_aggregate/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /03-define_aggregates/2-decrease_coupling_with_aggregates/2-split_aggregate/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/2-decrease_coupling_with_aggregates/2-split_aggregate/gradle/wrapper/gradle-wrapper.properties -------------------------------------------------------------------------------- /03-define_aggregates/2-decrease_coupling_with_aggregates/2-split_aggregate/gradlew: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/2-decrease_coupling_with_aggregates/2-split_aggregate/gradlew -------------------------------------------------------------------------------- /03-define_aggregates/2-decrease_coupling_with_aggregates/2-split_aggregate/gradlew.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/2-decrease_coupling_with_aggregates/2-split_aggregate/gradlew.bat -------------------------------------------------------------------------------- /03-define_aggregates/2-decrease_coupling_with_aggregates/2-split_aggregate/src/main/resources/log4j2.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/2-decrease_coupling_with_aggregates/2-split_aggregate/src/main/resources/log4j2.properties -------------------------------------------------------------------------------- /03-define_aggregates/2-decrease_coupling_with_aggregates/2-split_aggregate/src/test/resources/log4j2.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/2-decrease_coupling_with_aggregates/2-split_aggregate/src/test/resources/log4j2.properties -------------------------------------------------------------------------------- /03-define_aggregates/2-decrease_coupling_with_aggregates/2-split_aggregate/var/log/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/1-in_user_case_methods/.editorconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/1-in_user_case_methods/.editorconfig -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/1-in_user_case_methods/.github/workflows/workflow.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/1-in_user_case_methods/.github/workflows/workflow.yml -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/1-in_user_case_methods/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/1-in_user_case_methods/.gitignore -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/1-in_user_case_methods/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/1-in_user_case_methods/Makefile -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/1-in_user_case_methods/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/1-in_user_case_methods/README.md -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/1-in_user_case_methods/build.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/1-in_user_case_methods/build.gradle -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/1-in_user_case_methods/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/1-in_user_case_methods/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/1-in_user_case_methods/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/1-in_user_case_methods/gradle/wrapper/gradle-wrapper.properties -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/1-in_user_case_methods/gradlew: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/1-in_user_case_methods/gradlew -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/1-in_user_case_methods/gradlew.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/1-in_user_case_methods/gradlew.bat -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/1-in_user_case_methods/src/main/resources/log4j2.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/1-in_user_case_methods/src/main/resources/log4j2.properties -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/1-in_user_case_methods/src/test/resources/log4j2.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/1-in_user_case_methods/src/test/resources/log4j2.properties -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/1-in_user_case_methods/var/log/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/2-in_domain_services/.editorconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/2-in_domain_services/.editorconfig -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/2-in_domain_services/.github/workflows/workflow.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/2-in_domain_services/.github/workflows/workflow.yml -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/2-in_domain_services/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/2-in_domain_services/.gitignore -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/2-in_domain_services/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/2-in_domain_services/Makefile -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/2-in_domain_services/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/2-in_domain_services/README.md -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/2-in_domain_services/build.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/2-in_domain_services/build.gradle -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/2-in_domain_services/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/2-in_domain_services/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/2-in_domain_services/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/2-in_domain_services/gradle/wrapper/gradle-wrapper.properties -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/2-in_domain_services/gradlew: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/2-in_domain_services/gradlew -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/2-in_domain_services/gradlew.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/2-in_domain_services/gradlew.bat -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/2-in_domain_services/src/main/resources/log4j2.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/2-in_domain_services/src/main/resources/log4j2.properties -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/2-in_domain_services/src/test/resources/log4j2.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/2-in_domain_services/src/test/resources/log4j2.properties -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/2-in_domain_services/var/log/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/3-all_in_domain_services/.editorconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/3-all_in_domain_services/.editorconfig -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/3-all_in_domain_services/.github/workflows/workflow.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/3-all_in_domain_services/.github/workflows/workflow.yml -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/3-all_in_domain_services/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/3-all_in_domain_services/.gitignore -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/3-all_in_domain_services/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/3-all_in_domain_services/Makefile -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/3-all_in_domain_services/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/3-all_in_domain_services/README.md -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/3-all_in_domain_services/build.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/3-all_in_domain_services/build.gradle -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/3-all_in_domain_services/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/3-all_in_domain_services/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/3-all_in_domain_services/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/3-all_in_domain_services/gradle/wrapper/gradle-wrapper.properties -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/3-all_in_domain_services/gradlew: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/3-all_in_domain_services/gradlew -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/3-all_in_domain_services/gradlew.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/3-all_in_domain_services/gradlew.bat -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/3-all_in_domain_services/src/main/resources/log4j2.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/3-all_in_domain_services/src/main/resources/log4j2.properties -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/3-all_in_domain_services/src/test/resources/log4j2.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/3-all_in_domain_services/src/test/resources/log4j2.properties -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/3-all_in_domain_services/var/log/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/3-all_in_domain_services/view_files_that_change_together.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/3-all_in_domain_services/view_files_that_change_together.sh -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/4-all_in_aggregate/.editorconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/4-all_in_aggregate/.editorconfig -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/4-all_in_aggregate/.github/workflows/workflow.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/4-all_in_aggregate/.github/workflows/workflow.yml -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/4-all_in_aggregate/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/4-all_in_aggregate/.gitignore -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/4-all_in_aggregate/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/4-all_in_aggregate/Makefile -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/4-all_in_aggregate/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/4-all_in_aggregate/README.md -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/4-all_in_aggregate/build.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/4-all_in_aggregate/build.gradle -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/4-all_in_aggregate/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/4-all_in_aggregate/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/4-all_in_aggregate/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/4-all_in_aggregate/gradle/wrapper/gradle-wrapper.properties -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/4-all_in_aggregate/gradlew: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/4-all_in_aggregate/gradlew -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/4-all_in_aggregate/gradlew.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/4-all_in_aggregate/gradlew.bat -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/4-all_in_aggregate/src/main/resources/log4j2.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/4-all_in_aggregate/src/main/resources/log4j2.properties -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/4-all_in_aggregate/src/test/resources/log4j2.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/4-all_in_aggregate/src/test/resources/log4j2.properties -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/4-all_in_aggregate/var/log/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/5-in_aggregate_and_value_objects/.editorconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/5-in_aggregate_and_value_objects/.editorconfig -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/5-in_aggregate_and_value_objects/.github/workflows/workflow.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/5-in_aggregate_and_value_objects/.github/workflows/workflow.yml -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/5-in_aggregate_and_value_objects/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/5-in_aggregate_and_value_objects/.gitignore -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/5-in_aggregate_and_value_objects/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/5-in_aggregate_and_value_objects/Makefile -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/5-in_aggregate_and_value_objects/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/5-in_aggregate_and_value_objects/README.md -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/5-in_aggregate_and_value_objects/build.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/5-in_aggregate_and_value_objects/build.gradle -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/5-in_aggregate_and_value_objects/gradlew: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/5-in_aggregate_and_value_objects/gradlew -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/5-in_aggregate_and_value_objects/gradlew.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/03-define_aggregates/3-domain_services_vs_aggregates/5-in_aggregate_and_value_objects/gradlew.bat -------------------------------------------------------------------------------- /03-define_aggregates/3-domain_services_vs_aggregates/5-in_aggregate_and_value_objects/var/log/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/composer.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/1-polimorfism/composer.json -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/composer.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/1-polimorfism/composer.lock -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/etc/database.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/1-polimorfism/etc/database.sql -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/src/Backoffice/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/src/Shop/Bonus/Application/SearchAll/AllBonusesSearcher.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/1-polimorfism/src/Shop/Bonus/Application/SearchAll/AllBonusesSearcher.php -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/src/Shop/Bonus/Domain/Bonus.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/1-polimorfism/src/Shop/Bonus/Domain/Bonus.php -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/src/Shop/Bonus/Domain/BonusId.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/1-polimorfism/src/Shop/Bonus/Domain/BonusId.php -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/src/Shop/Bonus/Domain/BonusRepository.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/1-polimorfism/src/Shop/Bonus/Domain/BonusRepository.php -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/src/Shop/Bonus/Domain/BonusReward.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/1-polimorfism/src/Shop/Bonus/Domain/BonusReward.php -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/src/Shop/Bonus/Domain/DailyBonus.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/1-polimorfism/src/Shop/Bonus/Domain/DailyBonus.php -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/src/Shop/Bonus/Domain/FirstSevenDaysStreakBonus.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/1-polimorfism/src/Shop/Bonus/Domain/FirstSevenDaysStreakBonus.php -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/src/Shop/Bonus/Domain/WelcomeBonus.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/1-polimorfism/src/Shop/Bonus/Domain/WelcomeBonus.php -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/src/Shop/Bonus/Domain/WelcomeBonusSticker.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/1-polimorfism/src/Shop/Bonus/Domain/WelcomeBonusSticker.php -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/src/Shop/BonusUsage/Application/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/src/Shop/BonusUsage/Domain/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/src/Shop/BonusUsage/Infrastructure/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/src/Shop/Products/Application/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/src/Shop/Products/Domain/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/src/Shop/Products/Infrastructure/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/vendor/autoload.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/1-polimorfism/vendor/autoload.php -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/vendor/composer/ClassLoader.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/1-polimorfism/vendor/composer/ClassLoader.php -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/vendor/composer/InstalledVersions.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/1-polimorfism/vendor/composer/InstalledVersions.php -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/vendor/composer/LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/1-polimorfism/vendor/composer/LICENSE -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/vendor/composer/autoload_classmap.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/1-polimorfism/vendor/composer/autoload_classmap.php -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/vendor/composer/autoload_namespaces.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/1-polimorfism/vendor/composer/autoload_namespaces.php -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/vendor/composer/autoload_psr4.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/1-polimorfism/vendor/composer/autoload_psr4.php -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/vendor/composer/autoload_real.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/1-polimorfism/vendor/composer/autoload_real.php -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/vendor/composer/autoload_static.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/1-polimorfism/vendor/composer/autoload_static.php -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/vendor/composer/installed.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/1-polimorfism/vendor/composer/installed.json -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/vendor/composer/installed.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/1-polimorfism/vendor/composer/installed.php -------------------------------------------------------------------------------- /04-good_practices/1-polimorfism/vendor/composer/platform_check.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/1-polimorfism/vendor/composer/platform_check.php -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/.github/workflows/ci.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/.github/workflows/ci.yml -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/.gitignore -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/README.md -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/compose.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/compose.yml -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/databases/0-enable-pgvector.sql: -------------------------------------------------------------------------------- 1 | CREATE EXTENSION IF NOT EXISTS vector; 2 | -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/databases/1-mooc.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/databases/1-mooc.sql -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/eslint.config.mjs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/eslint.config.mjs -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/etc/courses.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/etc/courses.json -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/etc/request/mooc/course_progress.http: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/etc/request/mooc/course_progress.http -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/etc/request/mooc/courses.http: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/etc/request/mooc/courses.http -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/etc/schemas/com.codely.mooc.Course.avsc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/etc/schemas/com.codely.mooc.Course.avsc -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/etc/scripts/1-list_topics.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/etc/scripts/1-list_topics.sh -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/etc/scripts/2-start_server.sh: -------------------------------------------------------------------------------- 1 | npm run dev 2 | -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/etc/scripts/3-create_courses.sh: -------------------------------------------------------------------------------- 1 | npm run create-courses 2 | -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/etc/scripts/4-consume.sh: -------------------------------------------------------------------------------- 1 | npm run consume-kafka 2 | -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/etc/scripts/5-compare_results.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/etc/scripts/5-compare_results.sql -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/jest.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/jest.config.js -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/next.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/next.config.js -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/package-lock.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/package-lock.json -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/package.json -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/public/next.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/public/next.svg -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/public/vercel.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/public/vercel.svg -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/app/api/mooc/courses/[course-id]/rename/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/app/api/mooc/courses/[course-id]/rename/route.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/app/api/mooc/courses/[course-id]/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/app/api/mooc/courses/[course-id]/route.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/app/favicon.ico -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/app/globals.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/app/globals.css -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/app/layout.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/app/layout.tsx -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/app/scripts/create-courses.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/app/scripts/create-courses.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/application/create/CourseCreator.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/application/create/CourseCreator.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/application/delete/CourseDeleter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/application/delete/CourseDeleter.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/application/rename/CourseRenamer.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/application/rename/CourseRenamer.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/Course.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/Course.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseCategories.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseCategories.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseCategory.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseCategory.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseCategoryAddedDomainEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseCategoryAddedDomainEvent.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseCreatedDomainEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseCreatedDomainEvent.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseDeletedDomainEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseDeletedDomainEvent.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseDoesNotExistError.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseDoesNotExistError.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseDomainEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseDomainEvent.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseId.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseId.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseName.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseName.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseRenamedDomainEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseRenamedDomainEvent.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseRepository.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseResponse.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseResponse.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseResummarizedDomainEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseResummarizedDomainEvent.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseSummary.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/CourseSummary.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/DomainCourseFinder.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/mooc/courses/domain/DomainCourseFinder.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/application/DomainEventSubscriber.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/application/DomainEventSubscriber.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/application/SnapshotProjector.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/application/SnapshotProjector.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/domain/AggregateRoot.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/domain/AggregateRoot.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/domain/Clock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/domain/Clock.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/domain/DomainError.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/domain/DomainError.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/domain/EmailAddress.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/domain/EmailAddress.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/domain/Identifier.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/domain/Identifier.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/domain/NanoId.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/domain/NanoId.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/domain/NumberValueObject.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/domain/NumberValueObject.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/domain/SnapshotPublisher.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/domain/SnapshotPublisher.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/domain/StringValueObject.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/domain/StringValueObject.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/domain/event/DomainEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/domain/event/DomainEvent.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/domain/event/DomainEventClass.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/domain/event/DomainEventClass.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/domain/event/DomainEventSubscriber.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/domain/event/EventBus.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/domain/event/EventBus.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/infrastructure/http/HttpNextResponse.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/infrastructure/http/HttpNextResponse.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/infrastructure/postgres/PostgresConnection.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/infrastructure/postgres/PostgresConnection.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/infrastructure/postgres/PostgresRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/src/contexts/shared/infrastructure/postgres/PostgresRepository.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/tests/contexts/mooc/courses/domain/CourseCategoriesMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/tests/contexts/mooc/courses/domain/CourseCategoriesMother.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/tests/contexts/mooc/courses/domain/CourseCategoryMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/tests/contexts/mooc/courses/domain/CourseCategoryMother.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/tests/contexts/mooc/courses/domain/CourseIdMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/tests/contexts/mooc/courses/domain/CourseIdMother.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/tests/contexts/mooc/courses/domain/CourseMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/tests/contexts/mooc/courses/domain/CourseMother.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/tests/contexts/mooc/courses/domain/CourseNameMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/tests/contexts/mooc/courses/domain/CourseNameMother.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/tests/contexts/mooc/courses/domain/CourseSummaryMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/tests/contexts/mooc/courses/domain/CourseSummaryMother.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/tests/contexts/mooc/courses/domain/MockCourseRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/tests/contexts/mooc/courses/domain/MockCourseRepository.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/tests/contexts/shared/domain/EmailAddressMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/tests/contexts/shared/domain/EmailAddressMother.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/tests/contexts/shared/domain/EnumMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/tests/contexts/shared/domain/EnumMother.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/tests/contexts/shared/infrastructure/MockClock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/tests/contexts/shared/infrastructure/MockClock.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/tests/contexts/shared/infrastructure/MockEventBus.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/tests/contexts/shared/infrastructure/MockEventBus.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/tests/contexts/shared/infrastructure/MockSnapshotPublisher.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/tests/contexts/shared/infrastructure/MockSnapshotPublisher.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/1-without_primitives/tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/1-without_primitives/tsconfig.json -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/.github/workflows/ci.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/.github/workflows/ci.yml -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/.gitignore -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/README.md -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/compose.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/compose.yml -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/databases/0-enable-pgvector.sql: -------------------------------------------------------------------------------- 1 | CREATE EXTENSION IF NOT EXISTS vector; 2 | -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/databases/1-mooc.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/databases/1-mooc.sql -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/eslint.config.mjs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/eslint.config.mjs -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/etc/courses.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/etc/courses.json -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/etc/request/mooc/course_progress.http: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/etc/request/mooc/course_progress.http -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/etc/request/mooc/courses.http: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/etc/request/mooc/courses.http -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/etc/schemas/com.codely.mooc.Course.avsc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/etc/schemas/com.codely.mooc.Course.avsc -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/etc/scripts/1-list_topics.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/etc/scripts/1-list_topics.sh -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/etc/scripts/2-start_server.sh: -------------------------------------------------------------------------------- 1 | npm run dev 2 | -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/etc/scripts/3-create_courses.sh: -------------------------------------------------------------------------------- 1 | npm run create-courses 2 | -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/etc/scripts/4-consume.sh: -------------------------------------------------------------------------------- 1 | npm run consume-kafka 2 | -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/etc/scripts/5-compare_results.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/etc/scripts/5-compare_results.sql -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/jest.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/jest.config.js -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/next.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/next.config.js -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/package-lock.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/package-lock.json -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/package.json -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/public/next.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/public/next.svg -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/public/vercel.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/public/vercel.svg -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/app/api/mooc/courses/[course-id]/rename/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/app/api/mooc/courses/[course-id]/rename/route.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/app/api/mooc/courses/[course-id]/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/app/api/mooc/courses/[course-id]/route.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/app/favicon.ico -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/app/globals.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/app/globals.css -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/app/layout.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/app/layout.tsx -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/app/scripts/create-courses.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/app/scripts/create-courses.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/application/create/CourseCreator.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/application/create/CourseCreator.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/application/delete/CourseDeleter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/application/delete/CourseDeleter.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/application/rename/CourseRenamer.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/application/rename/CourseRenamer.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/Course.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/Course.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseCategories.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseCategories.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseCategory.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseCategory.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseCategoryAddedDomainEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseCategoryAddedDomainEvent.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseCategoryRemovedDomainEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseCategoryRemovedDomainEvent.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseCreatedDomainEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseCreatedDomainEvent.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseDeletedDomainEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseDeletedDomainEvent.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseDoesNotExistError.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseDoesNotExistError.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseDomainEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseDomainEvent.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseId.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseId.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseName.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseName.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseRenamedDomainEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseRenamedDomainEvent.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseRepository.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseResponse.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseResponse.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseResummarizedDomainEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseResummarizedDomainEvent.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseSummary.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/CourseSummary.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/DomainCourseFinder.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/mooc/courses/domain/DomainCourseFinder.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/application/DomainEventSubscriber.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/application/DomainEventSubscriber.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/application/SnapshotProjector.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/application/SnapshotProjector.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/domain/AggregateRoot.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/domain/AggregateRoot.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/domain/Clock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/domain/Clock.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/domain/DomainError.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/domain/DomainError.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/domain/EmailAddress.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/domain/EmailAddress.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/domain/Identifier.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/domain/Identifier.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/domain/NanoId.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/domain/NanoId.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/domain/NumberValueObject.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/domain/NumberValueObject.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/domain/SnapshotPublisher.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/domain/SnapshotPublisher.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/domain/StringValueObject.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/domain/StringValueObject.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/domain/event/DomainEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/domain/event/DomainEvent.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/domain/event/DomainEventClass.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/domain/event/DomainEventClass.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/domain/event/DomainEventSubscriber.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/domain/event/EventBus.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/domain/event/EventBus.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/infrastructure/http/HttpNextResponse.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/infrastructure/http/HttpNextResponse.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/infrastructure/postgres/PostgresConnection.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/infrastructure/postgres/PostgresConnection.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/infrastructure/postgres/PostgresRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/src/contexts/shared/infrastructure/postgres/PostgresRepository.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/tests/contexts/mooc/courses/domain/CourseCategoriesMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/tests/contexts/mooc/courses/domain/CourseCategoriesMother.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/tests/contexts/mooc/courses/domain/CourseCategoryMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/tests/contexts/mooc/courses/domain/CourseCategoryMother.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/tests/contexts/mooc/courses/domain/CourseIdMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/tests/contexts/mooc/courses/domain/CourseIdMother.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/tests/contexts/mooc/courses/domain/CourseMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/tests/contexts/mooc/courses/domain/CourseMother.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/tests/contexts/mooc/courses/domain/CourseNameMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/tests/contexts/mooc/courses/domain/CourseNameMother.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/tests/contexts/mooc/courses/domain/CourseSummaryMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/tests/contexts/mooc/courses/domain/CourseSummaryMother.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/tests/contexts/mooc/courses/domain/MockCourseRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/tests/contexts/mooc/courses/domain/MockCourseRepository.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/tests/contexts/shared/domain/EmailAddressMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/tests/contexts/shared/domain/EmailAddressMother.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/tests/contexts/shared/domain/EnumMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/tests/contexts/shared/domain/EnumMother.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/tests/contexts/shared/infrastructure/MockClock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/tests/contexts/shared/infrastructure/MockClock.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/tests/contexts/shared/infrastructure/MockEventBus.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/tests/contexts/shared/infrastructure/MockEventBus.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/tests/contexts/shared/infrastructure/MockSnapshotPublisher.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/tests/contexts/shared/infrastructure/MockSnapshotPublisher.ts -------------------------------------------------------------------------------- /04-good_practices/3-primitives/2-with_primitives/tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/04-good_practices/3-primitives/2-with_primitives/tsconfig.json -------------------------------------------------------------------------------- /05-modeling/1-promote_module_to_bc/1-before_promoting_module_to_bc/shop/order_lines/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /05-modeling/1-promote_module_to_bc/1-before_promoting_module_to_bc/shop/orders/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /05-modeling/1-promote_module_to_bc/1-before_promoting_module_to_bc/shop/product_reviews/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /05-modeling/1-promote_module_to_bc/1-before_promoting_module_to_bc/shop/product_stats/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /05-modeling/1-promote_module_to_bc/1-before_promoting_module_to_bc/shop/products/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /05-modeling/1-promote_module_to_bc/1-before_promoting_module_to_bc/shop/users/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /05-modeling/1-promote_module_to_bc/2-after_promoting_module_to_bc/products/products/Product: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /05-modeling/1-promote_module_to_bc/2-after_promoting_module_to_bc/products/reviews/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /05-modeling/1-promote_module_to_bc/2-after_promoting_module_to_bc/products/stats/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /05-modeling/1-promote_module_to_bc/2-after_promoting_module_to_bc/shop/order_lines/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /05-modeling/1-promote_module_to_bc/2-after_promoting_module_to_bc/shop/orders/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /05-modeling/1-promote_module_to_bc/2-after_promoting_module_to_bc/shop/products/ShopProduct: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /05-modeling/1-promote_module_to_bc/2-after_promoting_module_to_bc/shop/users/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/.github/workflows/ci.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/.github/workflows/ci.yml -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/.gitignore -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/README.md -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/compose.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/compose.yml -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/databases/0-enable-extensions.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/databases/0-enable-extensions.sql -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/databases/1-mooc.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/databases/1-mooc.sql -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/eslint.config.mjs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/eslint.config.mjs -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/etc/config/claude_desktop_config.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/etc/config/claude_desktop_config.json -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/etc/integrate/1-jetbrains_ai.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/etc/integrate/1-jetbrains_ai.md -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/etc/integrate/2-jetbrains_junie.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/etc/integrate/2-jetbrains_junie.json -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/etc/integrate/3-cursor.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/etc/integrate/3-cursor.json -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/etc/integrate/4-claude.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/etc/integrate/4-claude.json -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/etc/integrate/5-vscode.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/etc/integrate/5-vscode.json -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/etc/ollama/ollama-entrypoint.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/etc/ollama/ollama-entrypoint.sh -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/etc/ollama/ollama-healthcheck.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/etc/ollama/ollama-healthcheck.sh -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/etc/request/mooc/course_progress.http: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/etc/request/mooc/course_progress.http -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/etc/request/mooc/courses.http: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/etc/request/mooc/courses.http -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/etc/scripts/1-start.sh: -------------------------------------------------------------------------------- 1 | docker compose up 2 | -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/etc/scripts/2-create_courses.sh: -------------------------------------------------------------------------------- 1 | npm run create-courses 2 | -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/etc/scripts/3-inspect.sh: -------------------------------------------------------------------------------- 1 | npm run mcp:inspect 2 | -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/jest.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/jest.config.js -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/next.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/next.config.js -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/package-lock.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/package-lock.json -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/package.json -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/public/next.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/public/next.svg -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/public/vercel.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/public/vercel.svg -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/app/api/mooc/course-progress/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/app/api/mooc/course-progress/route.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/app/api/mooc/courses/[id]/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/app/api/mooc/courses/[id]/route.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/app/api/mooc/courses/by-similar-name/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/app/api/mooc/courses/by-similar-name/route.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/app/api/mooc/courses/paginated/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/app/api/mooc/courses/paginated/route.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/app/api/mooc/courses/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/app/api/mooc/courses/route.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/app/api/mooc/courses/similar-to-courses/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/app/api/mooc/courses/similar-to-courses/route.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/app/api/mooc/invoices/[invoice_id]/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/app/api/mooc/invoices/[invoice_id]/route.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/app/api/mooc/invoices/by-serie-and-number/[serie_number]/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/app/api/mooc/invoices/by-serie-and-number/[serie_number]/route.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/app/api/mooc/users/[user-id]/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/app/api/mooc/users/[user-id]/route.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/app/favicon.ico -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/app/globals.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/app/globals.css -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/app/layout.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/app/layout.tsx -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/app/scripts/courses.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/app/scripts/courses.json -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/app/scripts/create-courses.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/app/scripts/create-courses.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/courses/application/find/CourseFinder.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/courses/application/find/CourseFinder.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/courses/application/search-all/AllCoursesSearcher.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/courses/application/search-all/AllCoursesSearcher.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/courses/application/search-by-ids/CoursesByIdsSearcher.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/courses/application/search-by-ids/CoursesByIdsSearcher.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/courses/application/search/CourseSearcher.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/courses/application/search/CourseSearcher.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/courses/domain/Course.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/courses/domain/Course.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/courses/domain/CourseBySimilarNameNotFoundError.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/courses/domain/CourseBySimilarNameNotFoundError.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/courses/domain/CourseId.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/courses/domain/CourseId.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/courses/domain/CourseNotFoundError.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/courses/domain/CourseNotFoundError.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/courses/domain/CourseRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/courses/domain/CourseRepository.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/courses/infrastructure/PostgresCourseRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/courses/infrastructure/PostgresCourseRepository.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/invoices/application/create/InvoiceCreator.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/invoices/application/create/InvoiceCreator.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/invoices/domain/Invoice.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/invoices/domain/Invoice.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/invoices/domain/InvoiceAmount.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/invoices/domain/InvoiceAmount.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/invoices/domain/InvoiceId.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/invoices/domain/InvoiceId.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/invoices/domain/InvoiceNumber.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/invoices/domain/InvoiceNumber.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/invoices/domain/InvoiceRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/invoices/domain/InvoiceRepository.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/invoices/domain/InvoiceSerie.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/invoices/domain/InvoiceSerie.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/invoices/domain/InvoiceVatId.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/invoices/domain/InvoiceVatId.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/invoices/infrastructure/PostgresInvoiceRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/invoices/infrastructure/PostgresInvoiceRepository.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/user-course-suggestions/domain/CourseSuggestion.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/user-course-suggestions/domain/CourseSuggestion.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/user-course-suggestions/domain/UserCourseSuggestions.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/user-course-suggestions/domain/UserCourseSuggestions.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/users/application/find/UserFinder.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/users/application/find/UserFinder.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/users/application/registrar/UserRegistrar.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/users/application/registrar/UserRegistrar.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/users/domain/CoursesSuggestionLlm.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/users/domain/CoursesSuggestionLlm.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/users/domain/DomainUserFinder.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/users/domain/DomainUserFinder.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/users/domain/User.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/users/domain/User.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/users/domain/UserBio.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/users/domain/UserBio.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/users/domain/UserDoesNotExistError.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/users/domain/UserDoesNotExistError.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/users/domain/UserDomainEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/users/domain/UserDomainEvent.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/users/domain/UserEmail.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/users/domain/UserEmail.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/users/domain/UserId.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/users/domain/UserId.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/users/domain/UserName.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/users/domain/UserName.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/users/domain/UserRegisteredDomainEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/users/domain/UserRegisteredDomainEvent.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/users/domain/UserRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/users/domain/UserRepository.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/users/infrastructure/InMemoryCacheUserRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/users/infrastructure/InMemoryCacheUserRepository.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/mooc/users/infrastructure/PostgresUserRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/mooc/users/infrastructure/PostgresUserRepository.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/shared/domain/AggregateRoot.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/shared/domain/AggregateRoot.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/shared/domain/Clock.ts: -------------------------------------------------------------------------------- 1 | export interface Clock { 2 | now(): Date; 3 | } 4 | -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/shared/domain/CodelyError.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/shared/domain/CodelyError.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/shared/domain/DomainError.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/shared/domain/DomainError.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/shared/domain/EmailAddress.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/shared/domain/EmailAddress.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/shared/domain/Identifier.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/shared/domain/Identifier.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/shared/domain/InvalidBase64Error.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/shared/domain/InvalidBase64Error.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/shared/domain/InvalidNanoIdError.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/shared/domain/InvalidNanoIdError.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/shared/domain/NanoId.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/shared/domain/NanoId.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/shared/domain/NumberValueObject.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/shared/domain/NumberValueObject.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/shared/domain/StringValueObject.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/shared/domain/StringValueObject.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/shared/domain/assertNever.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/shared/domain/assertNever.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/shared/domain/event/DomainEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/shared/domain/event/DomainEvent.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/shared/domain/event/DomainEventClass.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/shared/domain/event/DomainEventClass.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/shared/domain/event/DomainEventSubscriber.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/shared/domain/event/DomainEventSubscriber.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/shared/domain/event/EventBus.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/shared/domain/event/EventBus.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/shared/infrastructure/dependency-injection/diod.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/shared/infrastructure/dependency-injection/diod.config.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/shared/infrastructure/domain-event/InMemoryEventBus.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/shared/infrastructure/domain-event/InMemoryEventBus.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/shared/infrastructure/http/HttpNextResponse.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/shared/infrastructure/http/HttpNextResponse.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/shared/infrastructure/http/executeWithErrorHandling.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/shared/infrastructure/http/executeWithErrorHandling.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/shared/infrastructure/http/withErrorHandling.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/shared/infrastructure/http/withErrorHandling.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/shared/infrastructure/postgres/PostgresConnection.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/shared/infrastructure/postgres/PostgresConnection.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/src/contexts/shared/infrastructure/postgres/PostgresRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/src/contexts/shared/infrastructure/postgres/PostgresRepository.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/start-mcp-debug.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | export NODE_OPTIONS='--inspect-brk=9229' 3 | exec ts-node ./src/app/mcp/server.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/app/api/mooc/courses/CoursesGet.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/app/api/mooc/courses/CoursesGet.test.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/courses/application/find/CourseFinder.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/courses/application/find/CourseFinder.test.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/courses/application/search-all/AllCoursesSearcher.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/courses/application/search-all/AllCoursesSearcher.test.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/courses/application/search/CourseSearcher.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/courses/application/search/CourseSearcher.test.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/courses/domain/CourseIdMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/courses/domain/CourseIdMother.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/courses/domain/CourseMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/courses/domain/CourseMother.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/courses/infrastructure/MockCourseRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/courses/infrastructure/MockCourseRepository.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/courses/infrastructure/PostgresCourseRepository.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/courses/infrastructure/PostgresCourseRepository.test.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/invoices/application/create/InvoiceCreator.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/invoices/application/create/InvoiceCreator.test.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/invoices/domain/InvoiceAmountMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/invoices/domain/InvoiceAmountMother.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/invoices/domain/InvoiceIdMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/invoices/domain/InvoiceIdMother.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/invoices/domain/InvoiceMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/invoices/domain/InvoiceMother.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/invoices/domain/InvoiceNumberMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/invoices/domain/InvoiceNumberMother.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/invoices/domain/InvoiceSerieMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/invoices/domain/InvoiceSerieMother.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/invoices/domain/InvoiceVatIdMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/invoices/domain/InvoiceVatIdMother.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/invoices/infrastructure/MockInvoiceRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/invoices/infrastructure/MockInvoiceRepository.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/invoices/infrastructure/PostgresInvoiceRepository.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/invoices/infrastructure/PostgresInvoiceRepository.test.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/user-course-suggestions/domain/CourseSuggestionMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/user-course-suggestions/domain/CourseSuggestionMother.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/users/application/registrar/UserRegistrar.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/users/application/registrar/UserRegistrar.test.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/users/domain/DateMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/users/domain/DateMother.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/users/domain/UserBioMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/users/domain/UserBioMother.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/users/domain/UserEmailMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/users/domain/UserEmailMother.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/users/domain/UserIdMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/users/domain/UserIdMother.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/users/domain/UserMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/users/domain/UserMother.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/users/domain/UserNameMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/users/domain/UserNameMother.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/users/domain/UserRegisteredDomainEventMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/users/domain/UserRegisteredDomainEventMother.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/users/infrastructure/MockCoursesSuggestionLlm.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/users/infrastructure/MockCoursesSuggestionLlm.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/users/infrastructure/MockUserRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/users/infrastructure/MockUserRepository.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/mooc/users/infrastructure/PostgresUserRepository.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/mooc/users/infrastructure/PostgresUserRepository.test.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/shared/domain/EmailAddressMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/shared/domain/EmailAddressMother.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/shared/domain/EnumMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/shared/domain/EnumMother.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/shared/infrastructure/MockClock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/shared/infrastructure/MockClock.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/shared/infrastructure/MockEventBus.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/shared/infrastructure/MockEventBus.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/contexts/shared/infrastructure/evaluatePrompt.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/contexts/shared/infrastructure/evaluatePrompt.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tests/utils/TestServerManager.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tests/utils/TestServerManager.ts -------------------------------------------------------------------------------- /06-common_problems/4-ids_from_outside/tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/06-common_problems/4-ids_from_outside/tsconfig.json -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/.github/workflows/ci.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/.github/workflows/ci.yml -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/.gitignore -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/README.md -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/compose.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/compose.yml -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/databases/0-enable-pgvector.sql: -------------------------------------------------------------------------------- 1 | CREATE EXTENSION IF NOT EXISTS vector; 2 | -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/databases/1-mooc.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/databases/1-mooc.sql -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/eslint.config.mjs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/eslint.config.mjs -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/etc/courses.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/etc/courses.json -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/etc/prompts/codely-design-blueprint.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/etc/prompts/codely-design-blueprint.md -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/etc/request/mooc/course_progress.http: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/etc/request/mooc/course_progress.http -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/etc/request/mooc/courses.http: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/etc/request/mooc/courses.http -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/etc/schemas/com.codely.mooc.Course.avsc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/etc/schemas/com.codely.mooc.Course.avsc -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/etc/scripts/1-list_topics.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/etc/scripts/1-list_topics.sh -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/etc/scripts/2-start_server.sh: -------------------------------------------------------------------------------- 1 | npm run dev 2 | -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/etc/scripts/3-create_courses.sh: -------------------------------------------------------------------------------- 1 | npm run create-courses 2 | -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/etc/scripts/4-consume.sh: -------------------------------------------------------------------------------- 1 | npm run consume-kafka 2 | -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/etc/scripts/5-compare_results.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/etc/scripts/5-compare_results.sql -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/jest.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/jest.config.js -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/next.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/next.config.js -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/package-lock.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/package-lock.json -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/package.json -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/public/next.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/public/next.svg -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/public/vercel.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/public/vercel.svg -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/app/api/mooc/courses/[course-id]/rename/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/app/api/mooc/courses/[course-id]/rename/route.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/app/api/mooc/courses/[course-id]/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/app/api/mooc/courses/[course-id]/route.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/app/favicon.ico -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/app/globals.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/app/globals.css -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/app/layout.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/app/layout.tsx -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/app/scripts/create-courses.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/app/scripts/create-courses.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/mooc/courses/application/add-category/CourseCategoryAdder.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/mooc/courses/application/add-category/CourseCategoryAdder.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/mooc/courses/application/create/CourseCreator.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/mooc/courses/application/create/CourseCreator.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/mooc/courses/application/delete/CourseDeleter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/mooc/courses/application/delete/CourseDeleter.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/mooc/courses/application/remove-category/CourseCategoryRemover.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/mooc/courses/application/remove-category/CourseCategoryRemover.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/mooc/courses/application/rename/CourseRenamer.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/mooc/courses/application/rename/CourseRenamer.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/mooc/courses/application/resummarize/CourseResummarizer.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/mooc/courses/application/resummarize/CourseResummarizer.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/mooc/courses/application/search/CourseSearcher.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/mooc/courses/application/search/CourseSearcher.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/Course.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/Course.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseCategories.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseCategories.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseCategory.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseCategory.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseCategoryAddedDomainEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseCategoryAddedDomainEvent.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseCategoryRemovedDomainEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseCategoryRemovedDomainEvent.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseCreatedDomainEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseCreatedDomainEvent.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseDeletedDomainEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseDeletedDomainEvent.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseDoesNotExistError.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseDoesNotExistError.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseDomainEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseDomainEvent.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseId.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseId.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseName.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseName.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseRenamedDomainEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseRenamedDomainEvent.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseRepository.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseResponse.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseResponse.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseResummarizedDomainEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseResummarizedDomainEvent.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseSummary.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/CourseSummary.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/DomainCourseFinder.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/mooc/courses/domain/DomainCourseFinder.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/mooc/courses/infrastructure/PostgresCourseRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/mooc/courses/infrastructure/PostgresCourseRepository.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/shared/application/DomainEventSubscriber.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/shared/application/DomainEventSubscriber.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/shared/application/SnapshotProjector.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/shared/application/SnapshotProjector.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/shared/domain/AggregateRoot.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/shared/domain/AggregateRoot.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/shared/domain/Clock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/shared/domain/Clock.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/shared/domain/DomainError.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/shared/domain/DomainError.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/shared/domain/EmailAddress.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/shared/domain/EmailAddress.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/shared/domain/Identifier.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/shared/domain/Identifier.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/shared/domain/NanoId.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/shared/domain/NanoId.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/shared/domain/NumberValueObject.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/shared/domain/NumberValueObject.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/shared/domain/SnapshotPublisher.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/shared/domain/SnapshotPublisher.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/shared/domain/StringValueObject.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/shared/domain/StringValueObject.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/shared/domain/event/DomainEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/shared/domain/event/DomainEvent.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/shared/domain/event/DomainEventClass.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/shared/domain/event/DomainEventClass.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/shared/domain/event/DomainEventSubscriber.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/shared/domain/event/EventBus.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/shared/domain/event/EventBus.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/shared/infrastructure/dependency-injection/diod.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/shared/infrastructure/dependency-injection/diod.config.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/shared/infrastructure/domain-event/InMemoryEventBus.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/shared/infrastructure/domain-event/InMemoryEventBus.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/shared/infrastructure/http/HttpNextResponse.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/shared/infrastructure/http/HttpNextResponse.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/shared/infrastructure/http/executeWithErrorHandling.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/shared/infrastructure/http/executeWithErrorHandling.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/shared/infrastructure/postgres/PostgresConnection.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/shared/infrastructure/postgres/PostgresConnection.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/src/contexts/shared/infrastructure/postgres/PostgresRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/src/contexts/shared/infrastructure/postgres/PostgresRepository.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/tests/contexts/mooc/courses/application/create/CourseCreator.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/tests/contexts/mooc/courses/application/create/CourseCreator.test.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/tests/contexts/mooc/courses/application/resummarize/CourseResummarizer.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/tests/contexts/mooc/courses/application/resummarize/CourseResummarizer.test.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/tests/contexts/mooc/courses/application/search/CourseSearcher.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/tests/contexts/mooc/courses/application/search/CourseSearcher.test.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/tests/contexts/mooc/courses/domain/CourseCategoriesMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/tests/contexts/mooc/courses/domain/CourseCategoriesMother.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/tests/contexts/mooc/courses/domain/CourseCategoryMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/tests/contexts/mooc/courses/domain/CourseCategoryMother.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/tests/contexts/mooc/courses/domain/CourseCreatedDomainEventMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/tests/contexts/mooc/courses/domain/CourseCreatedDomainEventMother.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/tests/contexts/mooc/courses/domain/CourseIdMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/tests/contexts/mooc/courses/domain/CourseIdMother.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/tests/contexts/mooc/courses/domain/CourseMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/tests/contexts/mooc/courses/domain/CourseMother.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/tests/contexts/mooc/courses/domain/CourseNameMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/tests/contexts/mooc/courses/domain/CourseNameMother.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/tests/contexts/mooc/courses/domain/CourseResummarizedDomainEventMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/tests/contexts/mooc/courses/domain/CourseResummarizedDomainEventMother.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/tests/contexts/mooc/courses/domain/CourseSummaryMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/tests/contexts/mooc/courses/domain/CourseSummaryMother.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/tests/contexts/mooc/courses/domain/MockCourseRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/tests/contexts/mooc/courses/domain/MockCourseRepository.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/tests/contexts/shared/domain/EmailAddressMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/tests/contexts/shared/domain/EmailAddressMother.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/tests/contexts/shared/domain/EnumMother.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/tests/contexts/shared/domain/EnumMother.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/tests/contexts/shared/infrastructure/MockClock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/tests/contexts/shared/infrastructure/MockClock.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/tests/contexts/shared/infrastructure/MockEventBus.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/tests/contexts/shared/infrastructure/MockEventBus.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/tests/contexts/shared/infrastructure/MockSnapshotPublisher.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/tests/contexts/shared/infrastructure/MockSnapshotPublisher.ts -------------------------------------------------------------------------------- /08-next_steps/1-design_canvas/tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/08-next_steps/1-design_canvas/tsconfig.json -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodelyTV/aggregates-course/HEAD/README.md --------------------------------------------------------------------------------