diff --git a/src/main/java/net/szymonsawicki/reactivetimesheetapp/application/service/TeamService.java b/src/main/java/net/szymonsawicki/reactivetimesheetapp/application/service/TeamService.java index b511fbf..50c0c1e 100644 --- a/src/main/java/net/szymonsawicki/reactivetimesheetapp/application/service/TeamService.java +++ b/src/main/java/net/szymonsawicki/reactivetimesheetapp/application/service/TeamService.java @@ -79,17 +79,18 @@ public class TeamService { .findById(teamId) .flatMap(team -> { - // at first, I'm changing teamId of all team members to null and save it in db + // at first, I'm changing teamId of all team members to null var membersToUpdate = TeamUtils.toMembers.apply(team) .stream() .map(member -> member.withTeamId(null)) .toList(); - userRepository.saveAll(membersToUpdate); - // then I'm deleting team and returning mono of DTO + // then I'm saving all updated members, deleting team and returning mono of DTO - return teamRepository.delete(teamId).map(Team::toGetTeamDto); + return userRepository.saveAll(membersToUpdate) + .then(teamRepository.delete(teamId)) + .then(Mono.just(team.toGetTeamDto())); }) .switchIfEmpty(Mono.error(new TeamServiceException("cannot find team to delete"))); } diff --git a/src/main/java/net/szymonsawicki/reactivetimesheetapp/application/service/UserService.java b/src/main/java/net/szymonsawicki/reactivetimesheetapp/application/service/UserService.java index 9082e37..74f226f 100644 --- a/src/main/java/net/szymonsawicki/reactivetimesheetapp/application/service/UserService.java +++ b/src/main/java/net/szymonsawicki/reactivetimesheetapp/application/service/UserService.java @@ -56,21 +56,19 @@ public class UserService { return userRepository .findById(userId) .flatMap(user -> { - // when teamId is not null then list of members in related team will be updated - String teamId = UserUtils.toTeamId.apply(user); if (teamId != null) { - teamRepository + return teamRepository .findById(teamId) .flatMap(team -> { TeamUtils.toMembers.apply(team).remove(user); return teamRepository.save(team); }); - } - userRepository.delete(userId); - return Mono.just(user.toGetUserDto()); - }) + }) + .then(userRepository.delete(userId)) + .then(Mono.just(user.toGetUserDto()); + .switchIfEmpty(Mono.error(new UserServiceException("cannot find user to delete"))); - } + } }