Skip to content

[Refactor]: 찜 도메인 코드 구조 개선 #135

Description

@juwoojae

Issue 요약

찜 도메인의 유지보수성과 책임 분리를 위해 관련 코드를 별도 도메인으로 재구성하고, 조회·변경 로직 분리, 로깅, Swagger 문서화 및 Converter 구조를 개선합니다.

또한 domain/page에 존재하는 찜 관련 중복 API를 제거하고 찜 도메인 API로 통합합니다.

Issue 상세

AS-IS:

  • 찜 관련 Controller, Service, Repository 및 Entity의 책임이 여러 도메인에 분산되어 있습니다.
  • 찜 조회 로직과 등록·삭제 로직이 하나의 서비스 구조에 혼재되어 있습니다.
  • domain/page와 찜 관련 도메인에 유사한 기능의 API가 중복으로 존재합니다.
  • 주요 비즈니스 로직에 로그가 충분하지 않아 찜 등록·삭제 및 조회 실패 원인을 추적하기 어렵습니다.
  • Service 내부에서 Entity와 DTO 변환을 직접 처리하여 비즈니스 로직과 변환 책임이 섞여 있습니다.
  • return 값이 void 임에도 불구하고, 204 가 존재하지 않습니다.

TO-BE:

  • 찜 관련 코드를 별도의 찜 도메인으로 분리하여 책임을 명확하게 구성합니다.
  • 찜 조회 책임과 등록·삭제 책임을 분리하여 CQRS 구조를 적용합니다.
  • domain/page에 존재하는 찜 관련 중복 API를 제거하고 찜 도메인 API로 통합합니다.
  • 찜 등록, 삭제, 조회 및 예외 상황에 적절한 로그를 추가합니다.
  • Entity와 DTO 간 변환 로직을 Converter 클래스로 분리합니다.
  • 찜 목록 조회 시 필요한 데이터를 한 번의 API 응답으로 제공하도록 구조를 정리합니다.
  • 찜 목록 삭제시, 응답을 204 로 전환합니다.

To do

  • 찜 관련 Controller, Service, Repository, Entity를 별도의 찜 도메인으로 분리
  • 찜 조회 로직을 담당하는 QueryService 구성
  • 찜 등록·삭제 로직을 담당하는 CommandService 또는 Service 구성
  • 찜 도메인에 CQRS 구조 적용
  • domain/page에 존재하는 찜 관련 중복 API 제거
  • 찜 관련 API를 찜 도메인 API로 통합
  • 찜 등록 성공 및 실패 로그 추가
  • 찜 삭제 성공 및 실패 로그 추가
  • 찜 목록 조회 성공 및 실패 로그 추가
  • 사용자 또는 활동 조회 실패 등 주요 예외 상황 로그 추가
  • Entity와 DTO 간 변환 로직을 Converter 클래스로 분리
  • Service 내부의 Entity·DTO 직접 변환 로직 제거
  • 찜 목록 조회에 필요한 카드 정보를 한 번의 API 응답으로 제공
  • 찜 목록 조회 과정에서 불필요한 추가 API 호출 및 N+1 문제 방지
  • 찜 삭제 API의 반환 타입을 void 또는 ResponseEntity<Void>로 정리
  • 찜 삭제 성공 응답 상태 코드를 204 No Content로 변경
  • 찜 등록·삭제·조회 관련 테스트 코드 수정 및 보강
  • Swagger/OpenAPI 문서에 변경된 엔드포인트와 응답 상태 코드 반영

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Refactor코드 구조 개선 및 성능 최적화를 위해 사용합니다.

Type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions