-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
전체 사용자 및 사용자 검색 API 구현 #8
Conversation
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 주석을 추가하였습니다
메서드들의 개수가 적은데 2개로 Port를 구분하는 것은 오히려 설계의 복잡성을 높인다 판단되어 Port를 1개로 통합하였습니다
전체 Member 조회와 Member 검색 상황을 다양한 시나리오에 따라 테스트하는 테스트 코드를 작성하였습니다
기본 Springboot 통합 테스트 메서드를 실행하던 과정에서 DB연결 문제로 오류가 발생하던것을 test 프로파일을 사용하도록 설정하여 해결하였습니다
List<GetMemberResponse> getAllMembers(); | ||
|
||
List<GetMemberResponse> searchMembers(Long id, String name, Integer generation, String email, Boolean isAvailable, MemberRole role); | ||
|
||
GetCurrentMemberResponse getCurrentMember(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
findAllMember, findMember 등으로 변경하는 것이 더 명확할 것 같아요
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
기존 QueryAllMember나 SearchMember와 같이 통일성 없던 메서드,클래스명을 Find를 접두사로 시작하도록 하여 통일성 및 가독성을 높였습니다
Find를 접두사로 같도록 메서드명을 통일하여 일관성을 확보하였습니다
수고하셨습니다!! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
수고하셨습니다
머지하셔도 될 듯 하네요!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
수고하셨습니다!
💡 PR 요약
GET /members
엔드포인트의 기능을 구현하였습니다GET /members/search
엔드포인트의 기능을 구현하였습니다Resolves: [Feat]
Member
관련 기능 구현 #5📋 작업 내용
🤝 리뷰 시 참고사항
✅ 체크리스트
README
,.env.example
)