패키지 구조(안) - f-lab-edu/calorie-counter GitHub Wiki

📦 
├─ calorie-counter
│  ├─ .gitignore
│  ├─ build.gradle
│  ├─ gradle
│  │  └─ wrapper
│  │     └─ gradle-wrapper.properties
│  ├─ gradlew
│  ├─ gradlew.bat
│  ├─ settings.gradle
│  └─ src
│     ├─ main
│     │  ├─ java
│     │  │  └─ f-lab-edu
│     │  │     └─ calorie-counter
│     │  │        ├─ CalorieCounterApplication.java
│     │  │        └─ User
│     │  │           ├─ adapter
│     │  │           │  ├─ in
│     │  │           │  │  └─ web
│     │  │           │  │     └─ UserRegisterController.java
│     │  │           │  │     └─ UserPasswordUpdateController.java
│     │  │           │  │     └─ UserInfoUpdateController.java
│     │  │           │  │     └─ ProviderCandidateApproveController.java
│     │  │           │  │     └─ UserBanController.java
│     │  │           │  └─ out
│     │  │           │     └─ persistence
│     │  │           │        ├─ UserEntity.java
│     │  │           │        ├─ UserMapper.java
│     │  │           │        ├─ UserPersistenceAdapter.java
│     │  │           │        ├─ UserMyBatisRepository.java // MyBatis
│     │  │           │        └─ UserJpaRepository.java // Jpa
│     │  │           ├─ application
│     │  │           │  ├─ port
│     │  │           │  │  ├─ in
│     │  │           │  │  │  ├─ OrdinaryUserRegisterUseCase.java
│     │  │           │  │  │  ├─ OrdinaryUserBanUseCase.java
│     │  │           │  │  │  ├─ ProviderRegisterUseCase.java
│     │  │           │  │  │  ├─ ProviderApproveUseCase.java
│     │  │           │  │  │  ├─ ChangeUserPasswordUseCase.java // U - Password
│     │  │           │  │  │  └─ ChangeUserInfoUseCase.java // U - UserInfo
│     │  │           │  │  └─ out
│     │  │           │  │     ├─ LoadUserPort.java
│     │  │           │  │     └─ SaveUserPort.java
│     │  │           │  └─ service
│     │  │           │     └─ UserRegisterService.java // Password
│     │  │           │     └─ UserPasswordUpdateService.java // Password
│     │  │           │     └─ UserInfoUpdateService.java // UserInfo
│     │  │           │     └─ ProviderCandidateApproveService.java
│     │  │           │     └─ UserBanService.java
│     │  │           └─ domain
│     │  │              └─ User.java
│     │  │              └─ Admin.java
│     │  │        └─ OrdinaryUserMeal // ERD : 음식 저장 테이블에 대응
│     │  │           ├─ adapter
│     │  │           │  ├─ in
│     │  │           │  │  └─ web
│     │  │           │  │     └─ OrdinaryUserMealController.java
│     │  │           │  └─ out
│     │  │           │     └─ persistence
│     │  │           │        ├─ MealEntity.java
│     │  │           │        ├─ MealMapper.java
│     │  │           │        ├─ MealPersistenceAdapter.java
│     │  │           │        ├─ MealMyBatisRepository.java // MyBatis
│     │  │           │        └─ MealJpaRepository.java // Jpa
│     │  │           ├─ application
│     │  │           │  ├─ port
│     │  │           │  │  ├─ in
│     │  │           │  │  │  ├─ NewMealUseCase.java // C - Meal
│     │  │           │  │  │  ├─ ReadMealUseCase.java // R - Meal "내가 그 동안 등록했던 모든 식단을 볼 수 있다"
│     │  │           │  │  │  ├─ UpdateMealUseCase.java // U - Meal
│     │  │           │  │  │  └─ DeleteMealUseCase.java // U - UserInfo
│     │  │           │  │  └─ out
│     │  │           │  │     ├─ LoadOrdinaryUserPort.java
│     │  │           │  │     └─ SaveOrdinaryUserPort.java
│     │  │           │  └─ service
│     │  │           │     └─ OrdinaryUserMealService.java // Meal
│     │  │           └─ domain
│     │  │              └─ OrdinaryUserMeal.java
│     │  │        └─ Feed
│     │  │           ├─ adapter
│     │  │           │  ├─ in
│     │  │           │  │  └─ web
│     │  │           │  │     └─ FeedController.java
│     │  │           │  └─ out
│     │  │           │     └─ persistence
│     │  │           │        ├─ FeedEntity.java
│     │  │           │        ├─ FeedMapper.java
│     │  │           │        ├─ FeedPersistenceAdapter.java
│     │  │           │        ├─ FeedMyBatisRepository.java // MyBatis
│     │  │           │        └─ FeedJpaRepository.java // Jpa
│     │  │           ├─ application
│     │  │           │  ├─ port
│     │  │           │  │  ├─ in
│     │  │           │  │  │  ├─ WriteFeedUseCase.java
│     │  │           │  │  │  ├─ ReadFeedUseCase.java
│     │  │           │  │  │  ├─ UpdateFeedUseCase.java
│     │  │           │  │  │  └─ DeleteFeedUseCase.java
│     │  │           │  │  └─ out
│     │  │           │  │     ├─ LoadFeedPort.java
│     │  │           │  │     └─ SaveFeedPort.java
│     │  │           │  └─ service
│     │  │           │     └─ FeedService.java
│     │  │           └─ domain
│     │  │              └─ Feed.java
│     │  │        └─ Comment
│     │  │           ├─ adapter
│     │  │           │  ├─ in
│     │  │           │  │  └─ web
│     │  │           │  │     └─ CommentController.java
│     │  │           │  └─ out
│     │  │           │     └─ persistence
│     │  │           │        ├─ CommentEntity.java
│     │  │           │        ├─ CommentMapper.java
│     │  │           │        ├─ CommentPersistenceAdapter.java
│     │  │           │        ├─ CommentMyBatisRepository.java // MyBatis
│     │  │           │        └─ CommentJpaRepository.java // Jpa
│     │  │           ├─ application
│     │  │           │  ├─ port
│     │  │           │  │  ├─ in
│     │  │           │  │  │  ├─ WriteCommentUseCase.java
│     │  │           │  │  │  ├─ ReadCommentUseCase.java
│     │  │           │  │  │  ├─ UpdateCommentUseCase.java
│     │  │           │  │  │  └─ DeleteCommentUseCase.java
│     │  │           │  │  └─ out
│     │  │           │  │     ├─ LoadCommentPort.java
│     │  │           │  │     └─ SaveCommentPort.java
│     │  │           │  └─ service
│     │  │           │     └─ CommentService.java // Meal
│     │  │           └─ domain
│     │  │              └─ Comment.java
│     │  │        └─ Like
│     │  │           ├─ adapter
│     │  │           │  ├─ in
│     │  │           │  │  └─ web
│     │  │           │  │     └─ LikeController.java
│     │  │           │  └─ out
│     │  │           │     └─ persistence
│     │  │           │        ├─ LikeEntity.java
│     │  │           │        ├─ LikeMapper.java
│     │  │           │        ├─ LikePersistenceAdapter.java
│     │  │           │        ├─ LikeMyBatisRepository.java // MyBatis
│     │  │           │        └─ LikeJpaRepository.java // Jpa
│     │  │           ├─ application
│     │  │           │  ├─ port
│     │  │           │  │  ├─ in
│     │  │           │  │  │  ├─ WriteCommentUseCase.java
│     │  │           │  │  │  ├─ ReadCommentUseCase.java
│     │  │           │  │  │  ├─ UpdateCommentUseCase.java
│     │  │           │  │  │  └─ DeleteCommentUseCase.java
│     │  │           │  │  └─ out
│     │  │           │  │     ├─ LoadLikePort.java
│     │  │           │  │     └─ SaveLikePort.java
│     │  │           │  └─ service
│     │  │           │     └─ LikeService.java // Meal
│     │  │           └─ domain
│     │  │              └─ Like.java
│     │  │        └─ Food // ERD: 음식 테이블에 대응
│     │  │           ├─ adapter
│     │  │           │  ├─ in
│     │  │           │  │  └─ web
│     │  │           │  │     └─ FoodController.java
│     │  │           │  └─ out
│     │  │           │     └─ persistence
│     │  │           │        ├─ FoodEntity.java
│     │  │           │        ├─ FoodMapper.java
│     │  │           │        ├─ FoodPersistenceAdapter.java
│     │  │           │        ├─ FoodMyBatisRepository.java // MyBatis
│     │  │           │        └─ FoodJpaRepository.java // Jpa
│     │  │           ├─ application
│     │  │           │  ├─ port
│     │  │           │  │  ├─ in
│     │  │           │  │  │  ├─ GetAllFoodCandidateUseCase.java // 전체 음식 정보 다 가져오기
│     │  │           │  │  │  ├─ GetFoodCandidateUseCase.java // 정보 제공자가 등록 요청한 음식 정보 가져오기
│     │  │           │  │  │  ├─ SubmitMyFoodCandidateUseCase.java // 정보 제공자가 새로운 음식 정보 제출하기
│     │  │           │  │  │  ├─ ModifyMyFoodCandidateUseCase.java // "정보 제공자의 심사 중 식단 정보 변경"
│     │  │           │  │  │  ├─ UnsubmitMyFoodCandidateUseCase.java // D - MyMealCandidate
│     │  │           │  │  │  ├─ JudgeOthersFoodCandidateUseCase.java // U - OthersMealCandidate 정보 제공자가 심사
│     │  │           │  │  │  └─ GetOthersFoodCandidateUseCase.java // "정보 제공자"
│     │  │           │  │  └─ out
│     │  │           │  │     ├─ LoadFoodPort.java
│     │  │           │  │     └─ SaveFoodPort.java
│     │  │           │  └─ service
│     │  │           │     └─ GetAllFoodCandidateService.java
│     │  │           │     └─ GetMyMealCandidateService.java
│     │  │           │     └─ SubmitMyMealCandidateService.java
│     │  │           │     └─ ModifyMyMealCandidateService.java
│     │  │           │     └─ UnsubmitMyMealCandidateService.java
│     │  │           │     └─ JudgeOthersMealCandidateService.java
│     │  │           │     └─ GetOthersMealCandidateService.java
│     │  │           └─ domain
│     │  │              └─ Food.java
│     │  │        └─ Admin
│     │  │           ├─ adapter
│     │  │           │  ├─ in
│     │  │           │  │  └─ web
│     │  │           │  │     └─ ProviderCandidateApproveController.java
│     │  │           │  │     └─ UserBanController.java
│     │  │           │  └─ out
│     │  │           │     └─ persistence
│     │  │           │        ├─ UserEntity.java
│     │  │           │        ├─ UserMapper.java
│     │  │           │        ├─ UserPersistenceAdapter.java
│     │  │           │        ├─ UserMyBatisRepository.java // MyBatis
│     │  │           │        └─ UserJpaRepository.java // Jpa
│     │  │           ├─ application
│     │  │           │  ├─ port
│     │  │           │  │  ├─ in
│     │  │           │  │  │  ├─ ChangeUserPasswordUseCase.java // U - Password
│     │  │           │  │  │  └─ ChangeUserInfoUseCase.java // U - UserInfo
│     │  │           │  │  └─ out
│     │  │           │  │     ├─ LoadUserPort.java
│     │  │           │  │     └─ SaveUserPort.java
│     │  │           │  └─ service
│     │  │           │     └─ UserPasswordUpdateService.java // Password
│     │  │           │     └─ UserInfoUpdateService.java // UserInfo
│     │  │           └─ domain
│     │  │              └─ User.java
│     │  └─ resources
│     │     └─ application.yml
│     └─ test
│        └─ java
│           └─ covenant
│              └─ hexagonal
│                 └─ CalorieCounterApplicationTests.java