From 9686db6c4f703eac3fad203485a1a319ee90a01d Mon Sep 17 00:00:00 2001 From: planetWeb252 Date: Mon, 19 May 2025 12:52:46 +0200 Subject: [PATCH 1/2] falta el controller --- .../users_micro/config/AppConfig.java | 17 +++++++++++ .../ironhack/users_micro/dto/AccountDTO.java | 15 ++++++++++ .../users_micro/dto/UserResponseDTO.java | 28 +++++++++++++++++++ src/main/resources/application.properties | 3 +- 4 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/ironhack/users_micro/config/AppConfig.java create mode 100644 src/main/java/com/ironhack/users_micro/dto/AccountDTO.java create mode 100644 src/main/java/com/ironhack/users_micro/dto/UserResponseDTO.java diff --git a/src/main/java/com/ironhack/users_micro/config/AppConfig.java b/src/main/java/com/ironhack/users_micro/config/AppConfig.java new file mode 100644 index 0000000..de07ff9 --- /dev/null +++ b/src/main/java/com/ironhack/users_micro/config/AppConfig.java @@ -0,0 +1,17 @@ +package com.ironhack.users_micro.config; + +import org.springframework.cloud.client.loadbalancer.LoadBalanced; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; + +@Configuration +public class AppConfig { + + @Bean + @LoadBalanced + public RestTemplate restTemplate() { + return new RestTemplate(); + } + +} diff --git a/src/main/java/com/ironhack/users_micro/dto/AccountDTO.java b/src/main/java/com/ironhack/users_micro/dto/AccountDTO.java new file mode 100644 index 0000000..24a6af3 --- /dev/null +++ b/src/main/java/com/ironhack/users_micro/dto/AccountDTO.java @@ -0,0 +1,15 @@ +package com.ironhack.users_micro.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class AccountDTO { + private Long id; + private String username; + private Long accountID; +} + diff --git a/src/main/java/com/ironhack/users_micro/dto/UserResponseDTO.java b/src/main/java/com/ironhack/users_micro/dto/UserResponseDTO.java new file mode 100644 index 0000000..7a35575 --- /dev/null +++ b/src/main/java/com/ironhack/users_micro/dto/UserResponseDTO.java @@ -0,0 +1,28 @@ +package com.ironhack.users_micro.dto; + +import com.ironhack.users_micro.model.User; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UserResponseDTO { + private Long id; + private String username; + private Long accountID; + private AccountDTO account; + + public UserResponseDTO(User user,AccountDTO account) { + setId(user.getId()); + setUsername(user.getUsername()); + setAccountID(user.getAccountID()); + setAccount(account); + + } + +} + + diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 37c2359..fff5fa0 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,7 +1,8 @@ spring.application.name=users-micro spring.datasource.url=jdbc:mysql://localhost:3306/users_micro spring.datasource.username=root -spring.datasource.password=admin +spring.datasource.password=mysqlpass +server.port=8080 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect spring.jpa.hibernate.ddl-auto=update From d7cfcfdabff05feeb0098fd1cb2fc54737c88249 Mon Sep 17 00:00:00 2001 From: planetWeb252 Date: Mon, 19 May 2025 14:36:13 +0200 Subject: [PATCH 2/2] loop in userService --- .../users_micro/controller/UserController.java | 3 ++- .../ironhack/users_micro/service/UserService.java | 14 +++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/ironhack/users_micro/controller/UserController.java b/src/main/java/com/ironhack/users_micro/controller/UserController.java index 0dd2e12..2cdad80 100644 --- a/src/main/java/com/ironhack/users_micro/controller/UserController.java +++ b/src/main/java/com/ironhack/users_micro/controller/UserController.java @@ -27,7 +27,8 @@ public List getAllUsers() { @GetMapping("/{id}") public ResponseEntity getUserById(@PathVariable long id) { try { - User foundUser = userService.getUserById(id); + ResponseEntity foundUser = userService.getUserById(id); + return new ResponseEntity<>(foundUser, HttpStatus.FOUND); } catch (UserNotFoundException e) { return new ResponseEntity<>(e.getMessage(), HttpStatus.NOT_FOUND); diff --git a/src/main/java/com/ironhack/users_micro/service/UserService.java b/src/main/java/com/ironhack/users_micro/service/UserService.java index 35957ce..edfd76a 100644 --- a/src/main/java/com/ironhack/users_micro/service/UserService.java +++ b/src/main/java/com/ironhack/users_micro/service/UserService.java @@ -1,11 +1,14 @@ package com.ironhack.users_micro.service; +import com.ironhack.users_micro.dto.AccountDTO; +import com.ironhack.users_micro.dto.UserResponseDTO; import com.ironhack.users_micro.exception.UserNotFoundException; import com.ironhack.users_micro.model.User; import com.ironhack.users_micro.repository.UserRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; import java.util.List; import java.util.Optional; @@ -13,16 +16,21 @@ @Service public class UserService { private final UserRepository userRepository; + private final RestTemplate restTemplate; - public UserService(UserRepository userRepository) { + public UserService(UserRepository userRepository, RestTemplate restTemplate) { this.userRepository = userRepository; + this.restTemplate = restTemplate; } - public User getUserById(long id){ + public ResponseEntity getUserById(long id){ Optional optionalUser = userRepository.findById(id); if(optionalUser.isPresent()){ - return optionalUser.get(); + //return optionalUser.get(); + AccountDTO accountDTO = restTemplate.getForObject("http://accounts-micro/api/account/" + optionalUser.get().getAccountID(), AccountDTO.class); + UserResponseDTO response= new UserResponseDTO(optionalUser.get(), accountDTO); + return ResponseEntity.ok(response); }else{ throw new UserNotFoundException("The user was not found"); }