Fixes issue with the cascading by the delete of user

This commit is contained in:
szsa
2022-03-27 20:51:14 +02:00
parent 82fe7e5e74
commit b093715845

View File

@@ -55,20 +55,25 @@ public class UserService {
public Mono<GetUserDto> deleteUser(String userId) { public Mono<GetUserDto> deleteUser(String userId) {
return userRepository return userRepository
.findById(userId) .findById(userId)
.flatMap(user -> { .flatMap(user -> userRepository.delete(userId)
// when teamId is not null then list of members in related team will be updated .then(deleteMemberFromTeam(user)))
String teamId = UserUtils.toTeamId.apply(user);
if (teamId != null) {
return teamRepository
.findById(teamId)
.flatMap(team -> {
TeamUtils.toMembers.apply(team).remove(user);
return teamRepository.save(team);
});
})
.then(userRepository.delete(userId))
.then(Mono.just(user.toGetUserDto());
.switchIfEmpty(Mono.error(new UserServiceException("cannot find user to delete"))); .switchIfEmpty(Mono.error(new UserServiceException("cannot find user to delete")));
} }
}
private Mono<GetUserDto> deleteMemberFromTeam(User member) {
var teamId = UserUtils.toTeamId.apply(member);
if (teamId != null) {
return teamRepository
.findById(teamId)
.flatMap(team -> {
TeamUtils.toMembers.apply(team).remove(member);
return teamRepository.save(team)
.flatMap(t -> Mono.just(member.toGetUserDto()));
})
.switchIfEmpty(Mono.error(new UserServiceException("cannot find user's team")));
}
return Mono.just(member.toGetUserDto());
}
}