Skip to content

implementando boas práticas de dto na camada de usuário #15

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Apr 18, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 0 additions & 12 deletions src/main/java/com/code/food/controller/UserController.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,30 +10,18 @@
import java.util.List;
import java.util.Optional;

// A anotação @RestController indica que esta classe é responsável por tratar requisições HTTP
@RestController
// A anotação @RequestMapping define o caminho base para acessar os métodos dessa classe.
// No caso, a URL será mapeada para "/user", e qualquer metodo dentro da classe com um mapeamento.
// adicional será acessado em relação a esse caminho.
@RequestMapping("/user")
public class UserController {

// A anotação @Autowired é utilizada para injeção automática de dependências pelo Spring.
@Autowired
private UserService userService;

// A anotação @PostMapping é usada para mapear uma requisição HTTP do tipo POST
// A anotação @RequestBody é utilizada para indicar que o corpo da requisição HTTP
// será convertido automaticamente em um objeto Java. O Spring realiza a desserialização
// dos dados (geralmente em formato JSON ou XML) e os mapeia para o parâmetro do metodo
// de acordo com o tipo especificado.
@PostMapping
public OutUser createUser(@RequestBody InUser inUser) {
return userService.createUser(inUser);
}

// A anotação @GetMapping serve para especificar que vamos buscar e retornar algo
// O metodo findAllUsers() irá retornar uma lista(List) contendo todos os usuários que foram cadastrados
@GetMapping
public List<UserEntity> findAllUsers() {
return userService.findAllUsers();
Expand Down
1 change: 0 additions & 1 deletion src/main/java/com/code/food/dto/InUser.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.code.food.dto;

public class InUser {

private String name;
private String email;
private String password;
Expand Down
21 changes: 19 additions & 2 deletions src/main/java/com/code/food/dto/OutUser.java
Original file line number Diff line number Diff line change
@@ -1,21 +1,30 @@
package com.code.food.dto;

public class OutUser {

private Long id;
private String name;
private String email;
private String role;
private String phone;
private String referralSource;

public OutUser(Long id, String name, String email, String phone, String referralSource) {
public OutUser(Long id, String name, String email, String role, String phone, String referralSource) {
this.id = id;
this.name = name;
this.email = email;
this.role = role;
this.phone = phone;
this.referralSource = referralSource;
}

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getName() {
return name;
}
Expand All @@ -32,6 +41,14 @@ public void setEmail(String email) {
this.email = email;
}

public String getRole() {
return role;
}

public void setRole(String role) {
this.role = role;
}

public String getPhone() {
return phone;
}
Expand Down
8 changes: 0 additions & 8 deletions src/main/java/com/code/food/entity/UserEntity.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,10 @@
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;

// A anotação @Entity indica que esta classe é uma entidade JPA, ou seja,
// ela será mapeada para uma tabela no banco de dados com o mesmo nome (ou um nome configurado).
@Entity
public class UserEntity {

// A anotação @Id marca o campo 'id' como a chave primária da tabela,
// identificando unicamente cada registro de usuário.
@Id

// A anotação @GeneratedValue define a estratégia para geração automática do valor do ID.
// Neste caso, a estratégia GenerationType.AUTO permite que o JPA escolha a melhor forma
// de gerar o ID, seja por incremento automático ou outro metodo dependendo do banco de dados.
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

Expand Down
24 changes: 5 additions & 19 deletions src/main/java/com/code/food/service/UserService.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,39 +13,25 @@

import static com.code.food.validation.UserValidator.*;

// A anotação @Service é usada para marcar uma classe como um serviço no Spring.
// Essa classe geralmente contém a lógica de negócio da aplicação.
@Service
public class UserService {

// A anotação @Autowired é utilizada para injeção automática de dependências pelo Spring.
// A variável userRepository é uma instância do repositório UserRepository, que é
// responsável pela interação com a base de dados para realizar operações CRUD
// (Create, Read, Update, Delete) relacionadas ao recurso "User".
// A visibilidade "private" indica que ela só pode ser acessada dentro da classe onde foi declarada.
@Autowired
private UserRepository userRepository;

// O metodo createUser recebe um objeto userEntity, que representa um usuário,
// e o salva no banco de dados utilizando o repositório userRepository.
// O metodo retorna o objeto userEntity após ser salvo, com os dados atualizados,
// incluindo o ID gerado automaticamente, se aplicável.
public OutUser createUser(InUser inUser) {

var userEntity = new UserEntity(inUser.getName(),
inUser.getEmail(),
inUser.getPassword(),
inUser.getPhone(),
inUser.getReferralSource());
UserEntity userEntity = new UserEntity(inUser.getName(), inUser.getEmail(),
inUser.getPassword(), inUser.getPhone(), inUser.getReferralSource());

validateFields(userEntity);

var userSaved = userRepository.save(userEntity);
UserEntity userSaved = userRepository.save(userEntity);

return new OutUser(userSaved.getId(), userSaved.getName(), userSaved.getEmail(), userSaved.getPhone(), userSaved.getReferralSource());
return new OutUser(userSaved.getId(), userSaved.getName(), userSaved.getEmail(),
userSaved.getRole(), userSaved.getPhone(), userSaved.getReferralSource());
}

// O metodo findAllUsers() irá retornar uma lista(List) contendo todos os usuários que foram cadastrados
public List<UserEntity> findAllUsers() {
return userRepository.findAll();
}
Expand Down
Loading