Skip to content
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

feat: 모임 목록 조회 방식을 수정하고, 다양한 조건에 따라 모임 검색이 가능하는 기능 구현 #24

Merged
merged 10 commits into from
Jan 3, 2024

Conversation

ddingmin
Copy link
Member

@ddingmin ddingmin commented Jan 2, 2024

🚀 어떤 기능을 개발했나요?

모임 목록 조회 기능 개발

🕶️ 어떻게 해결했나요?

  • 모임 목록 조회 방식을 커서 방식에서 페이지네이션 방식으로 변경
  • 다양한 조건에 따른 모임 목록 조회 방식을 JPA Specification을 적용하여 구현

🦀 이슈 넘버

close #18

(option) 어떤 부분에 집중하여 리뷰해야 할까요?

- 기존의 단일 조건 대신 JPA Specification을 통해 다양한 조건을 동적으로 조회할 수 있도록 변경
  - 참여 유저, 모임 주제, 검색, 모임 지역, 모임 종료 여부에 따라 모임들을 조회
- AOS의 요청에 따라 커서 방식이 아닌 페이지네이션 방식으로 변경
  - 응답 객체 변경
- isOpen에 대한 or 연산자가 앞에 있어 닫힌 모임에도 불구하고 조회되었던 문제 수정
- WebTestClient가 WebFlux 기반의 라이브러리로 Pageable의 값을 Resolving 하는 리솔버가 작동하지 않아 커스텀 리솔버를 테스트 환경에 추가했습니다.
- [ref](https://medium.com/@davidpetro/spring-webflux-and-pageable-be55104c234f)
@ddingmin ddingmin self-assigned this Jan 2, 2024
Copy link
Member

@devxb devxb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다.

Comment on lines 38 to 40
Slice<Meeting> meetings = meetingService.getMeetingsBySpecification(pageable, topic, meetingAreaStreet, participantUserId, searchWord, isOpen);

return ResultCursor.create(meetings, meetings.getLast().id(), size);
return PageDto.of(MeetingsResponse.of(meetings.getContent()), meetings.hasNext());
Copy link
Member

@devxb devxb Jan 2, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

반영하면 좋고 반영하지 않아도 괜찮음

Dto변환은 service레이어에서 했을때 더 자연스러운거 같아요. 👍

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PageDto 로 서비스 레이어에서 넘겨도 괜찮을까요?

hasNext의 존재때문에 MeetingsResponse로는 넘길수가 없어서요!

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

앗 넵!
PageDto의 위치가 controller.request가 아닌 domain 하위라서 service에 두는게 좀 더 자연스러워 보여요~

src/main/java/net/teumteum/meeting/domain/PageDto.java Outdated Show resolved Hide resolved
}

@Override
public Mono<Object> resolveArgument(MethodParameter methodParameter, BindingContext bindingContext, ServerWebExchange serverWebExchange) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WebTestClient 랑 MVC를 처음 붙여봐서 몰랐는데, 이런 어려움이 있네여 여기서 Mono 반환해야하는걸 보니 맞지 않는 옷을 입고있는 느낌이라. Restassured 로 가는게 맞지 않나.. 싶습니다. 이거 한번 논의해 봐야할거 같아요.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(당장 바꾸자는 아닙니다!)

@choidongkuen
Copy link
Member

고생했습니다!!!

Copy link

sonarqubecloud bot commented Jan 2, 2024

@ddingmin ddingmin merged commit a63dc55 into develop Jan 3, 2024
3 checks passed
@ddingmin ddingmin deleted the feature/iss-#18 branch January 3, 2024 05:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

feat: 모임 목록 조회 API 변경
3 participants