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

사용자 목록 검색 시 리턴 값 가나다(알파벳) 순 정렬 #79

Open
1 task
jagaldol opened this issue Oct 25, 2023 · 2 comments
Open
1 task
Labels
Priority: Low 추가적인 일 Type: Bug 문제 발견 Type: Question 추가 정보 요청 및 토의

Comments

@jagaldol
Copy link
Member

Description

현재 검색 시 id desc로 리턴 됩니다. 가나다 순으로 리턴되는게 직관적일 거 같습니다.

Tasks

  • 정렬 변경
@jagaldol jagaldol added Type: Bug 문제 발견 Type: Question 추가 정보 요청 및 토의 labels Oct 25, 2023
@jagaldol jagaldol self-assigned this Oct 25, 2023
@jagaldol
Copy link
Member Author

jagaldol commented Oct 25, 2023

변경하려고

@Query("SELECT u " +
        "FROM User u " +
        "WHERE u.name LIKE CONCAT('%', :name, '%') " +
        "ORDER BY " +
        "CASE " +
        "WHEN u.name = :name THEN 1 " +
        "WHEN u.name LIKE CONCAT('%', :name, '%') THEN 2 " +
        "ELSE 3" +
        "END, u.name")
List<User> findAllByNameContaining(@Param("name") String name, Pageable pageable);

@Query("SELECT u " +
        "FROM User u " +
        "WHERE u.name LIKE CONCAT('%', :name, '%') AND u.id < :key " +
        "ORDER BY " +
        "CASE " +
        "WHEN u.name = :name THEN 1 " +
        "WHEN u.name LIKE CONCAT('%', :name, '%') THEN 2 " +
        "ELSE 3" +
        "END, u.name")
List<User> findAllByNameContainingAndIdLessThan(@Param("name") String name, @Param("key") Long key, Pageable pageable);

이런 query를 짰는데 생각해보니 무한스크롤 방식이라 정렬을 바꿔버리면 key를 쓸 수 없다는 걸 알았습니다.

이부분을 변경하려면 커서기반 페이징이 아닌 일반 오프셋 기반 페이징으로 변경해야합니다.

추가적인 토의가 필요해 보여 수정하지 않고 놔두겠습니다.


현재 상황에서

볼링조아를 검색했을 때, 볼링조아보다 늦게 가입한 볼링조아1가 존재한다면 볼링조아1가 더 위로 올라올겁니다.

볼링조아라고 풀닉네임을 검색했으면 맨위로 올라오는게 정상같은데 이런 점이 UX를 해칠것 같습니다.

@jagaldol
Copy link
Member Author

오프셋 페이징으로 변경시 UI가 무한스크롤 방식이라 같은 요소가 2개 생기는 문제가 발생할 수도 있습니다.

유저 가입이 빈번하진 않을 것이니 이정도 UI 버그는 감안한다고 치면 api 구조를 최대한 변경하지 않도록 nextCursorKey의 key를 page로 삼는 방식이 가능할 것입니다.

key로 전달된 값을 page로 간주하여 변경하면 기존 api를 사용하던 프론트에 영향이 가지 않으며 변경 가능합니다.

추후 중복 요소 발생 가능성에 대한 UI 버그는 무한스크롤에서 페이지 방식으로 프론트측에서 시간 날 때 바꾸면 될 겁니다.

그전에 저희끼리 어떻게 하는 게 나을지 이야기 해보면 좋겠습니다!

@jagaldol jagaldol added the Priority: Low 추가적인 일 label Oct 25, 2023
@jagaldol jagaldol removed their assignment Oct 25, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Priority: Low 추가적인 일 Type: Bug 문제 발견 Type: Question 추가 정보 요청 및 토의
Projects
None yet
Development

No branches or pull requests

1 participant