diff --git a/src/main/java/com/cloudcomputing/todo/dto/UserDTO.java b/src/main/java/com/cloudcomputing/todo/dto/UserDTO.java index 7d67424f4dfd14cf382f1b413fa0b3cb7fd867c9..0472e4d0e5f9dfc4dc67c517ed52c42698e5a5f8 100644 --- a/src/main/java/com/cloudcomputing/todo/dto/UserDTO.java +++ b/src/main/java/com/cloudcomputing/todo/dto/UserDTO.java @@ -6,7 +6,7 @@ import lombok.Setter; @Getter @Setter public class UserDTO { - private Long userId; + private String userId; private String userName; private String password; } diff --git a/src/main/java/com/cloudcomputing/todo/entity/User.java b/src/main/java/com/cloudcomputing/todo/entity/User.java index cc04a360dc9ff4b0ee27fd564437195686632b47..66026ddc6eb7ce27e0d5c91e0c8d58786d26b2ab 100644 --- a/src/main/java/com/cloudcomputing/todo/entity/User.java +++ b/src/main/java/com/cloudcomputing/todo/entity/User.java @@ -10,7 +10,7 @@ import org.springframework.data.mongodb.core.mapping.Document; @Document(collection = "users") public class User { @Id - private Long userId; + private String userId; private String userName; private String passwordHash; } diff --git a/src/main/java/com/cloudcomputing/todo/mapper/UserMapper.java b/src/main/java/com/cloudcomputing/todo/mapper/UserMapper.java index f36a7d7dab84c4008cda79c34ab898fd58212314..b20fda9bb8d5c0fa12ec4d471adc06962f478cc9 100644 --- a/src/main/java/com/cloudcomputing/todo/mapper/UserMapper.java +++ b/src/main/java/com/cloudcomputing/todo/mapper/UserMapper.java @@ -2,7 +2,9 @@ package com.cloudcomputing.todo.mapper; import com.cloudcomputing.todo.dto.UserDTO; import com.cloudcomputing.todo.entity.User; +import org.springframework.stereotype.Component; +@Component public class UserMapper { public UserDTO entityToDto(User user) { UserDTO userDTO = new UserDTO(); diff --git a/src/main/java/com/cloudcomputing/todo/repository/UserRepository.java b/src/main/java/com/cloudcomputing/todo/repository/UserRepository.java index 9646f9efb3e14e2064345407d30e6c05a690140d..c3c6cf247f39aadfaa4103ba23fc194e94c5f873 100644 --- a/src/main/java/com/cloudcomputing/todo/repository/UserRepository.java +++ b/src/main/java/com/cloudcomputing/todo/repository/UserRepository.java @@ -4,4 +4,7 @@ import com.cloudcomputing.todo.entity.User; import org.springframework.data.mongodb.repository.MongoRepository; public interface UserRepository extends MongoRepository<User, String> { + boolean existsByUserName(String userName); + boolean existsByUserId(String userId); + User findByUserName(String userName); } diff --git a/src/main/java/com/cloudcomputing/todo/service/UserService.java b/src/main/java/com/cloudcomputing/todo/service/UserService.java index 4ea7476b38021106dbca803b4140809b5497ecd2..7278021af19f6ddb181d4c4bc0911c99b47a51a3 100644 --- a/src/main/java/com/cloudcomputing/todo/service/UserService.java +++ b/src/main/java/com/cloudcomputing/todo/service/UserService.java @@ -1,2 +1,29 @@ -package com.cloudcomputing.todo.service;public class UserService { +package com.cloudcomputing.todo.service; + +import com.cloudcomputing.todo.dto.UserDTO; +import com.cloudcomputing.todo.entity.User; +import com.cloudcomputing.todo.mapper.UserMapper; +import com.cloudcomputing.todo.repository.UserRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class UserService { + + @Autowired + private UserMapper userMapper; + @Autowired + private UserRepository userRepository; + + public User createUser(UserDTO userDTO) { + User newUser; + + if(userRepository.existsByUserId(userDTO.getUserId()) || userRepository.existsByUserName(userDTO.getUserName())){ + newUser = userRepository.findByUserName(userDTO.getUserName()); + } else { + newUser = userMapper.dtoToEntity(userDTO); + } + + return userRepository.save(newUser); + } } diff --git a/src/test/java/com/cloudcomputing/todo/service/UserServiceTest.java b/src/test/java/com/cloudcomputing/todo/service/UserServiceTest.java new file mode 100644 index 0000000000000000000000000000000000000000..19350668f3e480cb28811d77d40df74dc9e31333 --- /dev/null +++ b/src/test/java/com/cloudcomputing/todo/service/UserServiceTest.java @@ -0,0 +1,28 @@ +package com.cloudcomputing.todo.service; + +import com.cloudcomputing.todo.dto.UserDTO; +import com.cloudcomputing.todo.entity.User; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +@SpringBootTest +public class UserServiceTest { + + @Autowired + private UserService userService; + + @Test + public void testCreateUser(){ + UserDTO userToCreate = new UserDTO(); + userToCreate.setUserName("abduTest"); + userToCreate.setPassword("abduTestPassword"); + + User createdUser = userService.createUser(userToCreate); + assertNotNull(createdUser); + assertEquals(userToCreate.getUserName(), createdUser.getUserName()); + } +}