Skip to content

Commit ba17f2b

Browse files
committed
refactor: update user
optimize sql
1 parent b6a0df7 commit ba17f2b

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

src/main/java/com/thisaster/testtask/user/service/UserService.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,20 @@ public User updateUser(Long userId, User user) {
5252
}
5353
existingUser.setRole(roleService.getByRoleId(user.getRoleId()));
5454

55-
Set<Subscription> updatedSubscriptions = new HashSet<>();
55+
56+
Set<Subscription> currentSubscriptions = new HashSet<>(existingUser.getSubscriptions());
5657
if (user.getSubscriptions() != null) {
57-
for (Subscription subscription : user.getSubscriptions()) {
58-
subscribeUserToSub(userId, subscription);
59-
subscriptionRepository.findByName(subscription.getName())
60-
.ifPresent(updatedSubscriptions::add);
58+
for (Subscription newSub : user.getSubscriptions()) {
59+
boolean alreadySubscribed = currentSubscriptions.stream()
60+
.anyMatch(existingSub -> existingSub.getName().equals(newSub.getName()));
61+
62+
if (!alreadySubscribed) {
63+
subscribeUserToSub(userId, newSub);
64+
}
6165
}
6266
}
6367

64-
Set<Subscription> currentSubscriptions = new HashSet<>(existingUser.getSubscriptions());
68+
Set<Subscription> updatedSubscriptions = existingUser.getSubscriptions();
6569
for (Subscription currentSub : currentSubscriptions) {
6670
if (!updatedSubscriptions.contains(currentSub)) {
6771
removeSubFromUser(userId, currentSub.getId());

0 commit comments

Comments
 (0)