diff --git a/src/main/java/com/yello/server/domain/user/repository/UserJpaRepository.java b/src/main/java/com/yello/server/domain/user/repository/UserJpaRepository.java index 5e6d6df7..f6299dce 100644 --- a/src/main/java/com/yello/server/domain/user/repository/UserJpaRepository.java +++ b/src/main/java/com/yello/server/domain/user/repository/UserJpaRepository.java @@ -86,15 +86,6 @@ List findAllByGroupContainingName(@Param("groupName") String groupName, List findAllByOtherGroupContainingName(@Param("groupName") String groupName, @Param("keyword") String keyword, @Param("uuidList") List uuidList); - @Query("select u from User u " + - "where u.group.groupName like CONCAT('%', :keyword, '%') " + - "and u.uuid not in :uuidList " + - "and u not in :friendList " + - "and u.deletedAt is null " + - "order by u.name ASC ") - List findAllByGroupContaining(@Param("keyword") String keyword, @Param("uuidList") List uuidList, @Param("friendList") List friendList); - - @Query("select u from User u " + "where u.group.groupName = :groupName " + "and u.uuid not in :uuidList " diff --git a/src/main/java/com/yello/server/domain/user/repository/UserRepositoryImpl.java b/src/main/java/com/yello/server/domain/user/repository/UserRepositoryImpl.java index 7a9a85af..2ac72a3d 100644 --- a/src/main/java/com/yello/server/domain/user/repository/UserRepositoryImpl.java +++ b/src/main/java/com/yello/server/domain/user/repository/UserRepositoryImpl.java @@ -1,10 +1,15 @@ package com.yello.server.domain.user.repository; +import static com.yello.server.domain.user.entity.QUser.user; import static com.yello.server.global.common.ErrorCode.AUTH_UUID_NOT_FOUND_USER_EXCEPTION; import static com.yello.server.global.common.ErrorCode.DEVICE_TOKEN_NOT_FOUND_USER_EXCEPTION; import static com.yello.server.global.common.ErrorCode.USERID_NOT_FOUND_USER_EXCEPTION; import static com.yello.server.global.common.ErrorCode.YELLOID_NOT_FOUND_USER_EXCEPTION; +import com.querydsl.core.BooleanBuilder; +import com.querydsl.core.QueryMetadata; +import com.querydsl.core.types.Predicate; +import com.querydsl.jpa.impl.JPAQueryFactory; import com.yello.server.domain.user.entity.User; import com.yello.server.domain.user.exception.UserNotFoundException; import java.util.List; @@ -21,6 +26,7 @@ public class UserRepositoryImpl implements UserRepository { private final UserJpaRepository userJpaRepository; + private final JPAQueryFactory jpaQueryFactory; @Override public User save(User user) { @@ -155,7 +161,20 @@ public List findAllByOtherGroupContainingYelloId(String groupName, String @Override public List findAllByGroupNameContainingAndFriendListNotContaining(String keyword, List uuidList, List friendList) { - return userJpaRepository.findAllByGroupContaining(keyword, uuidList, friendList); + BooleanBuilder whereClause = new BooleanBuilder(); + + whereClause.and(user.group.groupName.like("%" + keyword + "%")); + whereClause.and(user.uuid.notIn(uuidList)); + whereClause.and(user.deletedAt.isNull()); + if(!friendList.isEmpty()) { + whereClause.and(user.notIn(friendList)); + } + + return jpaQueryFactory.selectFrom(user) + .where(whereClause) + .orderBy(user.name.asc()) + .fetch(); + } @Override