Skip to content

Commit e35722e

Browse files
committed
fix: 탈퇴 시 userTag 삭제
1 parent f6d45a0 commit e35722e

File tree

3 files changed

+22
-3
lines changed

3 files changed

+22
-3
lines changed

capturecat-core/src/main/java/com/capturecat/core/domain/user/UserTagRepository.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
import java.util.Optional;
44

55
import org.springframework.data.jpa.repository.JpaRepository;
6+
import org.springframework.data.jpa.repository.Modifying;
7+
import org.springframework.data.jpa.repository.Query;
8+
import org.springframework.data.repository.query.Param;
69

710
import com.capturecat.core.domain.tag.Tag;
811

@@ -13,4 +16,8 @@ public interface UserTagRepository extends JpaRepository<UserTag, Long>, UserTag
1316
boolean existsByUserAndTag(User user, Tag tag);
1417

1518
long countByUser(User user);
19+
20+
@Modifying
21+
@Query("delete from UserTag ut where ut.user.id = :userId")
22+
void deleteAllByUserId(@Param("userId") Long userId);
1623
}

capturecat-core/src/main/java/com/capturecat/core/service/user/UserService.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.capturecat.core.domain.user.UserSettingsRepository;
2424
import com.capturecat.core.domain.user.UserSocialAccount;
2525
import com.capturecat.core.domain.user.UserSocialAccountRepository;
26+
import com.capturecat.core.domain.user.UserTagRepository;
2627
import com.capturecat.core.service.auth.LoginUser;
2728
import com.capturecat.core.service.auth.SocialService;
2829
import com.capturecat.core.service.auth.SocialService.OidcUserPayload;
@@ -37,6 +38,7 @@ public class UserService {
3738
private final UserRepository userRepository;
3839
private final UserSocialAccountRepository userSocialAccountRepository;
3940
private final UserSettingsRepository userSettingsRepository;
41+
private final UserTagRepository userTagRepository;
4042
private final ImageRepository imageRepository;
4143
private final ImageTagRepository imageTagRepository;
4244
private final BookmarkRepository bookmarkRepository;
@@ -149,18 +151,22 @@ public UserSettings setUserSettings(String username, boolean enabled) {
149151
return setUserSettings(user.getId(), enabled);
150152
}
151153

154+
// TODO: user 관련된 것 삭제할 때 repository를 계속 추가할 순 없다.. 테스트코드가 변경된다. cascade?
152155
protected void deleteUserAndRelated(Long userId) {
153156
//1. 즐겨찾기 삭제
154157
bookmarkRepository.deleteByUserId(userId);
155158

156-
// 2. 해당 User가 소유한 이미지모두 삭제
159+
//2. 해당 User가 소유한 이미지모두 삭제
157160
imageTagRepository.deleteAllTagsByUserId(userId);
158161
imageRepository.deleteAllImagesByUserId(userId);
159162

160-
// 3. UserSettings 삭제
163+
//3. UserSettings 삭제
161164
userSettingsRepository.deleteById(userId);
162165

163-
// 4. User 삭제 -> social account도 삭제됨
166+
//4. UserTag 삭제
167+
userTagRepository.deleteAllByUserId(userId);
168+
169+
//5. User 삭제 -> social account도 삭제됨
164170
userRepository.deleteById(userId);
165171
}
166172

capturecat-core/src/test/java/com/capturecat/core/service/user/UserServiceTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import com.capturecat.core.domain.user.UserSettings;
3030
import com.capturecat.core.domain.user.UserSettingsRepository;
3131
import com.capturecat.core.domain.user.UserSocialAccountRepository;
32+
import com.capturecat.core.domain.user.UserTagRepository;
3233
import com.capturecat.core.service.auth.LoginUser;
3334
import com.capturecat.core.support.error.CoreException;
3435
import com.capturecat.core.support.error.ErrorType;
@@ -60,6 +61,9 @@ class UserServiceTest {
6061
@Mock
6162
private UserSettingsRepository userSettingsRepository;
6263

64+
@Mock
65+
private UserTagRepository userTagRepository;
66+
6367
@Spy
6468
private PasswordEncoder passwordEncoder;
6569

@@ -118,6 +122,8 @@ class UserServiceTest {
118122
verify(bookmarkRepository).deleteByUserId(savedUser.getId());
119123
verify(imageTagRepository).deleteAllTagsByUserId(savedUser.getId());
120124
verify(imageRepository).deleteAllImagesByUserId(savedUser.getId());
125+
verify(userSettingsRepository).deleteById(savedUser.getId());
126+
verify(userTagRepository).deleteAllByUserId(savedUser.getId());
121127

122128
ArgumentCaptor<Long> captor = ArgumentCaptor.forClass(Long.class);
123129
verify(userRepository).deleteById(captor.capture());

0 commit comments

Comments
 (0)