# [feat] 캡슐 CRUD 구현 ## 목적 - 캡슐 생성, 조회, 수정, 삭제 기능 구현 - 계층 구조(Entity → Repository → Service → Controller)를 바탕으로 기능 설계 - 전역 예외 처리 및 단위 테스트 포함 --- ## TODOs **1. 엔티티(Entity) 및 DTO 설계** - Capsule 엔티티 설계 - Media 엔티티 설계 및 Capsule과 1:N 매핑 - CapsuleType enum 정의 (NORMAL, TIME) - CapsuleRequestDto 작성 - CapsuleResponseDto 작성 --- **2. 저장소(Repository) 구현** - CapsuleRepository 인터페이스 (JpaRepository 상속) - MediaRepository 인터페이스 (필요 시 구현) --- **3. 서비스(Service) 구현** - CapsuleService 클래스 생성 - createCapsule() 메서드 구현 - getCapsuleById() 메서드 구현 - updateCapsule() 메서드 구현 - deleteCapsule() 메서드 구현 --- **4. 컨트롤러(Controller) 작성** - CapsuleController REST API 엔드포인트 작성 - POST `/api/capsules` - GET `/api/capsules/{id}` - PUT `/api/capsules/{id}` - DELETE `/api/capsules/{id}` - MultipartFile 파라미터 처리 및 DTO 연동 --- **5. 전역 예외 처리 설정** - CapsuleException 사용자 정의 예외 클래스 작성 - ErrorCode enum 정의 - ErrorResponse DTO 설계 - GlobalExceptionHandler 클래스 구현 --- **6. 테스트 및 검증** - Postman을 활용한 API 테스트 수행 - JUnit + AssertJ로 서비스 계층 단위 테스트 작성
[feat] 캡슐 CRUD 구현
목적
캡슐 생성, 조회, 수정, 삭제 기능 구현
계층 구조(Entity → Repository → Service → Controller)를 바탕으로 기능 설계
전역 예외 처리 및 단위 테스트 포함
TODOs
1. 엔티티(Entity) 및 DTO 설계
Capsule 엔티티 설계
Media 엔티티 설계 및 Capsule과 1:N 매핑
CapsuleType enum 정의 (NORMAL, TIME)
CapsuleRequestDto 작성
CapsuleResponseDto 작성
2. 저장소(Repository) 구현
CapsuleRepository 인터페이스 (JpaRepository 상속)
MediaRepository 인터페이스 (필요 시 구현)
3. 서비스(Service) 구현
CapsuleService 클래스 생성
createCapsule() 메서드 구현
getCapsuleById() 메서드 구현
updateCapsule() 메서드 구현
deleteCapsule() 메서드 구현
4. 컨트롤러(Controller) 작성
CapsuleController REST API 엔드포인트 작성
POST
/api/capsulesGET
/api/capsules/{id}PUT
/api/capsules/{id}DELETE
/api/capsules/{id}MultipartFile 파라미터 처리 및 DTO 연동
5. 전역 예외 처리 설정
CapsuleException 사용자 정의 예외 클래스 작성
ErrorCode enum 정의
ErrorResponse DTO 설계
GlobalExceptionHandler 클래스 구현
6. 테스트 및 검증
Postman을 활용한 API 테스트 수행
JUnit + AssertJ로 서비스 계층 단위 테스트 작성