Skip to content

Conversation

@snowykte0426
Copy link
Member

@snowykte0426 snowykte0426 commented Mar 24, 2025

💡 PR 요약

📋 작업 내용

GET /api/v1/member/current,PATCH /api/v1/member/{memberId}/password 2가지 엔드포인트에 대한 로직을 구현하였고 이에 관한 테스트 코드를 작성하였습니다

🤝 리뷰 시 참고사항

해당 PR로서 계획한 기능 구현은 전부 완료되었지만 #14 를 추가적으로 진행하여 완료해야 할 것 같습니다

✅ 체크리스트

  • 이 작업으로 인해 변경이 필요한 문서를 작성 또는 수정했나요? (e.g. README, .env.example)
  • 작업한 코드가 정상적으로 동작하는지 확인했나요?
  • 작업한 코드에 대한 테스트 코드를 작성하거나 수정했나요?
  • Merge 대상 브랜치를 올바르게 설정했나요?
  • 해당 PR과 관련 없는 작업이 포함되지는 않았나요?
  • PR의 올바른 라벨과 리뷰어를 설정했나요?

Member의 컨트롤러 클래스를 선언하였습니다
아직 구현은 하지 않았지만 API 명세서에 따라 엔드포인트들을 선언하였습니다
2개의 Request DTO를 정의하여 값 전달용과 외부 Request Body 형식 지정용으로 구분하였습니다
사용자의 권한을 지정하는 Enum 클래스를 GrantedAuthority를 상속받아 구현하였습니다
사용자의 정보를 조회하는 API의 응답 형식을 지정하는 DTO를 정의하였습니다
사용자 계정 정보를 관리하는 도메인 객체를 추가하였습니다
확장하여 사용하는 Entity 클래스 2종에 Getter 메서드와 public 접근 제어자를 추가하였습니다
실제 DB 테이블과 대응되는 Entity 클래스를 정의하였습니다
전 프로젝트에 걸쳐 사용될 Mapper 인터페이스를 구현하였고 도메인 객체와 JPA Entity 객체 간 Mapper 클래스를 구현하였습니다
ERD를 표현하는 임베드를 README에 추가하였습니다
브랜치 규칙을 포함하던 테이블에 다른 요소가 포함되었던 문제를 수정하였습니다
UUID를 기본 키로 가져가는 Entity가 요구사항의 변화로 더 이상 없다고 판단되어 관련 클래스를 삭제하였습니다
필드의 접근 제어가가 private 이던 것을 protected로 변경하여 상속받아 사용하는 하위 클래스에서 필드에 접근 가능하도록 조정하였습니다
UUID 기반 PK에서 정수형으로 자동 증분되는 형식의 PK로 변경하였습니다
UUID이던 id 필드가 Long 형으로 변경됨에 따라 필드의 자료형을 변경하였습니다
Ascildoc을 이용하던 README를 마크다운 파일로 변경하였습니다
Spring Bean에 등록하여 주고 인바운드,아웃바운드 Adapter를 구분해주는 어노테이션을 정의하였습니다
DTO 클래스를 Record로 변경하였습니다
Application 계층에 접근할 수 있는 Port와 그 구현체 Adapter를 구현하였습니다
Member 객체를 받아 GetMemberResponse 객체로 변환해주는 메서드를 추가하였습니다
읽기 Port와 쓰기(수정) Port를 각각 정의하여 책임을 분리하고 Application 계층에서 하위 Persistence 계층으로 접근할 수 있도록 하였습니다
Persistence 계층으로 접근하는 Adapter를 구현하였습니다
기본적인 쿼리와 QueryDSL을 이용하여 조금 더 복잡한 쿼리를 수행하는 Repository들을 구현하였습니다
Use Case 클래스에 사용되어 트랜젝션을 설정하고 Spring Bean으로 등록하는 어노테이션을 정의하였습니다
모든 Member 데이터를 조회하는 UseCase를 구현하였습니다
다양한 조건에 따라 Member를 검색하여 결과를 반환하는 UseCase 클래스를 구현하였습니다
애플리케이션 전역에서 발행되는 예외를 처리하고 클라이언트에 알맞은 응답을 반환해주는 클래스와 그를 위하여 필요한 클래스를 추가적으로 정의 및 구현하였습니다
Member 데이터가 null일시 발행될 MemberNotFoundException 클래스를 선언하였습니다
실제 비즈니스 로직과 연결하여 전체 사용자를 조회하고 사용자를 검색할 수 있는 엔드포인트를 구현하였습니다
다른 기능과 함께 구현되어야 할 기능에 TODO 주석을 추가하였습니다
인증 코드과 관련된 정보를 저장하고 관리하는 기능들의 영속(Persistence) 계층을 정의하고 구현하였습니다
인증 관련 정보를 저장 및 관리하는 영속,도메인 계층을 정의하고 구현하였습니다
단기간에 E-메일 인증을 5회 초과하여 요청할 시 발행될 예외 클래스와 인증 객체를 찾지 못하였을 시 발행될 예외 클래스를 구현하였습니다
엔드포인트 설정을 추가하고 불필요하고 알맞지 않은 응답을 반환하던 조건절을 제거하였습니다
대규모 리팩터링 전 MVP 구현을 위하여 기존 인터페이스의 DI를 제거하고 새로 생성한 인터페이스를 이용하도록 변경하였습니다
이메일 발송 기능은 존재하였지만 실제로 동작은 하지 않았던 이메일 인증 서비스를 실제로 구현하였습니다
비밀번호를 변경하는 클래스를 구현하였습니다
선언만 진행되고 미구현되었던 엔드포인트를 실제로 정의하였습니다
Google SMTP를 이용하기 위한 설정을 추가하였습니다
비밀번호 변경 엔드포인트에 대한 자유 접근을 허용하였습니다
추가적으로 요구되는 환경변수를 추가로 기록하였습니다
들여쓰기가 조금 다르게 적용되어 있던 코드를 변경하였습니다
이메일 인증이 진행되지 않았을 시 회원가입 요청을 반려하도록 수정하였습니다
같은 예외를 throw 하도록 설계된 2개의 if문을 하나의 if문 안에서 처리하도록 변경하였습니다
테스트 코드 작성을 위하여 테스트 클래스를 선언하였습니다
2가지 비즈니스 로직 클래스의 단위 테스트를 실제로 구현하였습니다
올바르지 않던 메서드의 매개변수 주입 순서를 수정하였습니다
이제 의미가 없어진 주석을 제거하였습니다
올바르지 않은 HTTP 상태 코드를 반환하던 문제를 수정하였습니다
@snowykte0426 snowykte0426 merged commit 72f1109 into develop Mar 25, 2025
2 checks passed
@snowykte0426 snowykte0426 deleted the feature/member-api branch March 25, 2025 13:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ Type: Feature 기능 추가 🔨 Type: Refector 코드 리펙토링

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants