Skip to content

Commit ace46a3

Browse files
committed
refactor: 탈퇴 피드백 삭제를 벌크 쿼리로 변경
1 parent 4d1f773 commit ace46a3

3 files changed

Lines changed: 15 additions & 8 deletions

File tree

src/main/java/com/semosan/api/domain/hiking/repository/CourseDifficultyFeedbackRepository.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,21 @@
22

33
import com.semosan.api.domain.hiking.entity.CourseDifficultyFeedback;
44
import org.springframework.data.jpa.repository.JpaRepository;
5+
import org.springframework.data.jpa.repository.Modifying;
6+
import org.springframework.data.jpa.repository.Query;
7+
import org.springframework.data.repository.query.Param;
58

69
import java.util.List;
710

811
public interface CourseDifficultyFeedbackRepository extends JpaRepository<CourseDifficultyFeedback, Long> {
912

1013
boolean existsByHikingRecord_Id(Long hikingRecordId);
1114

12-
void deleteByUser_Id(Long userId);
15+
@Modifying(clearAutomatically = true)
16+
@Query("DELETE FROM CourseDifficultyFeedback cdf WHERE cdf.user.id = :userId")
17+
void deleteByUserId(@Param("userId") Long userId);
1318

14-
void deleteByHikingRecord_IdIn(List<Long> hikingRecordIds);
19+
@Modifying(clearAutomatically = true)
20+
@Query("DELETE FROM CourseDifficultyFeedback cdf WHERE cdf.hikingRecord.id IN :hikingRecordIds")
21+
void deleteByHikingRecordIdIn(@Param("hikingRecordIds") List<Long> hikingRecordIds);
1522
}

src/main/java/com/semosan/api/domain/user/service/UserService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,11 +149,11 @@ private void deleteUserChildRecords(Long userId) {
149149
mountainLikeRepository.deleteByUser_Id(userId);
150150
courseLikeRepository.deleteByUser_Id(userId);
151151
reviewRepository.deleteByUser_Id(userId);
152-
courseDifficultyFeedbackRepository.deleteByUser_Id(userId);
152+
courseDifficultyFeedbackRepository.deleteByUserId(userId);
153153
List<Long> recordIdsToDelete = hikingRecordRepository.findRecordIdsOnlyParticipatedByUser(userId);
154154
hikingMemberRepository.deleteByUser_Id(userId);
155155
if (!recordIdsToDelete.isEmpty()) {
156-
courseDifficultyFeedbackRepository.deleteByHikingRecord_IdIn(recordIdsToDelete);
156+
courseDifficultyFeedbackRepository.deleteByHikingRecordIdIn(recordIdsToDelete);
157157
hikingRecordRepository.deleteAllByIdInBatch(recordIdsToDelete);
158158
}
159159
notificationRepository.deleteAllByUserId(userId);

src/test/java/com/semosan/api/domain/user/service/UserServiceTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -179,10 +179,10 @@ void withdrawUserDeletesUserChildRecordsAndSoftDeletesUser() {
179179

180180
verify(mountainLikeRepository).deleteByUser_Id(1L);
181181
verify(reviewRepository).deleteByUser_Id(1L);
182-
verify(courseDifficultyFeedbackRepository).deleteByUser_Id(1L);
182+
verify(courseDifficultyFeedbackRepository).deleteByUserId(1L);
183183
verify(hikingRecordRepository).findRecordIdsOnlyParticipatedByUser(1L);
184184
verify(hikingMemberRepository).deleteByUser_Id(1L);
185-
verify(courseDifficultyFeedbackRepository).deleteByHikingRecord_IdIn(List.of(10L, 11L));
185+
verify(courseDifficultyFeedbackRepository).deleteByHikingRecordIdIn(List.of(10L, 11L));
186186
verify(hikingRecordRepository).deleteAllByIdInBatch(List.of(10L, 11L));
187187
verify(notificationRepository).deleteAllByUserId(1L);
188188
verify(userOnboardingRepository).deleteByUser_Id(1L);
@@ -197,9 +197,9 @@ void withdrawUserDeletesUserChildRecordsAndSoftDeletesUser() {
197197
assertThat(user.getOnboardingStatus()).isEqualTo(OnboardingStatus.INCOMPLETE);
198198

199199
InOrder deleteOrder = inOrder(courseDifficultyFeedbackRepository, hikingRecordRepository);
200-
deleteOrder.verify(courseDifficultyFeedbackRepository).deleteByUser_Id(1L);
200+
deleteOrder.verify(courseDifficultyFeedbackRepository).deleteByUserId(1L);
201201
deleteOrder.verify(hikingRecordRepository).findRecordIdsOnlyParticipatedByUser(1L);
202-
deleteOrder.verify(courseDifficultyFeedbackRepository).deleteByHikingRecord_IdIn(List.of(10L, 11L));
202+
deleteOrder.verify(courseDifficultyFeedbackRepository).deleteByHikingRecordIdIn(List.of(10L, 11L));
203203
deleteOrder.verify(hikingRecordRepository).deleteAllByIdInBatch(List.of(10L, 11L));
204204
}
205205
}

0 commit comments

Comments
 (0)