Fixes creating of the new user and some issues in handler and handler

This commit is contained in:
szsa
2022-03-20 21:32:40 +01:00
parent c06eb4d817
commit ba5edc9c39
3 changed files with 16 additions and 11 deletions

View File

@@ -37,14 +37,19 @@ public class UserService {
return createUserDtoMono
.flatMap(createUserDto -> userRepository
.findByUsername(createUserDto.username())
.map(user -> {
log.error("user with username " + createUserDto.username() + " already exists");
return user.toGetUserDto();
})
.switchIfEmpty(createUserDtoMono.flatMap(userDto -> userRepository
.save(userDto.toUser())
.map(User::toGetUserDto)
)));
.hasElement()
.flatMap(isUserPresent -> Boolean.TRUE.equals(isUserPresent)
?
Mono.error(new UserServiceException("user with username " + createUserDto.username() + " already exists"))
:
createUser(createUserDto)));
}
private Mono<GetUserDto> createUser(CreateUserDto createUserDto) {
var user = createUserDto.toUser();
return userRepository
.save(user)
.map(User::toGetUserDto);
}
public Mono<GetUserDto> deleteUser(String userId) {

View File

@@ -30,7 +30,7 @@ public class Routing {
.andRoute(POST("/").and(accept(MediaType.APPLICATION_JSON)), teamHandlers::addTeam)
.andRoute(DELETE("/{id}").and(accept(MediaType.APPLICATION_JSON)), teamHandlers::deleteTeam))
.andNest(path("/users"),
RouterFunctions.route(GET("/{id}").and(accept(MediaType.APPLICATION_JSON)), userHandlers::findById)
RouterFunctions.route(GET("/id/{id}").and(accept(MediaType.APPLICATION_JSON)), userHandlers::findById)
.andRoute(GET("/{username}").and(accept(MediaType.APPLICATION_JSON)), userHandlers::findByUsername)
.andRoute(POST("/").and(accept(MediaType.APPLICATION_JSON)), userHandlers::createUser)
.andRoute(DELETE("/{id}").and(accept(MediaType.APPLICATION_JSON)), userHandlers::deleteUser))

View File

@@ -17,7 +17,7 @@ public class UserHandlers {
private final UserService userService;
public Mono<ServerResponse> findById(ServerRequest serverRequest) {
var userId = serverRequest.pathVariable("userId");
var userId = serverRequest.pathVariable("id");
return GlobalRoutingHandler.doRequest(userService.findById(userId), HttpStatus.OK);
}
@@ -32,7 +32,7 @@ public class UserHandlers {
}
public Mono<ServerResponse> deleteUser(ServerRequest serverRequest) {
var userId = serverRequest.pathVariable("userId");
var userId = serverRequest.pathVariable("id");
return GlobalRoutingHandler.doRequest(userService.deleteUser(userId), HttpStatus.OK);
}
}