Step3-kakao-tech-campus / Team3_BE

[카테캠 1기] 번개 지향 볼링 모집 커뮤니티 "번개볼링"의 백엔드 서버입니다.
2 stars 4 forks source link

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

Open jagaldol opened 11 months ago

jagaldol commented 11 months ago

Description

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

Tasks

jagaldol commented 11 months ago

변경하려고

@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 commented 11 months ago

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

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

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

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

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