Skip to content
Open
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
16 changes: 16 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,22 @@
<version>1.18.30</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency>

</dependencies>
<build>
Expand Down
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

?

This file was deleted.

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

?

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.orderflow.ecommerce.controllers;

import com.orderflow.ecommerce.dtos.UserRequestDTO;
import com.orderflow.ecommerce.services.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/users")
public class UserController {

@Autowired
private UserService userService;

@PostMapping
public ResponseEntity<UserRequestDTO> createUser(@RequestBody UserRequestDTO dto) {
UserRequestDTO savedUser = userService.create(dto);
return ResponseEntity.status(HttpStatus.CREATED).body(savedUser);
}

@GetMapping
public ResponseEntity<List<UserRequestDTO>> getAllUsers() {
List<UserRequestDTO> users = userService.findAll();
return ResponseEntity.ok(users);
}

@GetMapping("/{id}")
public ResponseEntity<UserRequestDTO> getUserById(@PathVariable Long id) {
return ResponseEntity.ok(userService.findById(id));
}

@PutMapping("/{id}")
public ResponseEntity<UserRequestDTO> updateUser(@PathVariable Long id, @RequestBody UserRequestDTO dto) {
return ResponseEntity.ok(userService.update(id, dto));
}

@DeleteMapping("/{id}")
public ResponseEntity<Void> deleteUser(@PathVariable Long id) {
userService.delete(id);
return ResponseEntity.noContent().build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package com.orderflow.ecommerce.dtos;

public record UserRequestDTO(Long id, String name, String email, String password) {
}
20 changes: 0 additions & 20 deletions src/main/java/com/orderflow/ecommerce/entities/Category.java

This file was deleted.

33 changes: 0 additions & 33 deletions src/main/java/com/orderflow/ecommerce/entities/Product.java

This file was deleted.

26 changes: 26 additions & 0 deletions src/main/java/com/orderflow/ecommerce/entities/User.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.orderflow.ecommerce.entities;

import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Entity
@Table(name = "tb_users")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private String name;

@Column(unique = true, nullable = false)
private String email;

@Column(nullable = false)
private String password;
}
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why?

This file was deleted.

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why?

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.orderflow.ecommerce.repositories;

import com.orderflow.ecommerce.entities.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.Optional;

@Repository
public interface UserRepository extends JpaRepository<User, Long> {

Optional<User> findByEmail(String email);
}
57 changes: 57 additions & 0 deletions src/main/java/com/orderflow/ecommerce/services/UserService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package com.orderflow.ecommerce.services;

import com.orderflow.ecommerce.dtos.UserRequestDTO;
import com.orderflow.ecommerce.entities.User;
import com.orderflow.ecommerce.repositories.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

@Service
public class UserService {

@Autowired
private UserRepository userRepository;

public UserRequestDTO create(UserRequestDTO dto) {
User user = new User();
user.setName(dto.name());
user.setEmail(dto.email());
user.setPassword(dto.password());

user = userRepository.save(user);
// Retornamos com o ID que o banco gerou
return new UserRequestDTO(user.getId(), user.getName(), user.getEmail(), null);
}

public List<UserRequestDTO> findAll() {
return userRepository.findAll().stream().map(user ->
new UserRequestDTO(user.getId(), user.getName(), user.getEmail(), null)
).collect(Collectors.toList());
}

public UserRequestDTO findById(Long id) {
User user = userRepository.findById(id)
.orElseThrow(() -> new RuntimeException("Usuário não encontrado"));
return new UserRequestDTO(user.getId(), user.getName(), user.getEmail(), null);
}

public UserRequestDTO update(Long id, UserRequestDTO dto) {
User user = userRepository.findById(id)
.orElseThrow(() -> new RuntimeException("Usuário não encontrado"));

user.setName(dto.name());
user.setEmail(dto.email());
// Se quiser atualizar a senha também, descomente a linha abaixo:
// user.setPassword(dto.password());

userRepository.save(user);
return new UserRequestDTO(user.getId(), user.getName(), user.getEmail(), null);
}

public void delete(Long id) {
userRepository.deleteById(id);
}
}
15 changes: 15 additions & 0 deletions src/main/resources/application.dev.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
spring.profiles.active=dev

spring.datasource.url=jdbc:postgresql://postgres:5432/orderflow
spring.datasource.username=orderflow
spring.datasource.password=orderflow123
spring.datasource.driver-class-name=org.postgresql.Driver

spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

spring.rabbitmq.host=rabbitmq
spring.rabbitmq.port=5672
spring.rabbitmq.username=orderflow
spring.rabbitmq.password=orderflow123
1 change: 1 addition & 0 deletions src/main/resources/application.properties
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Must not contain changes in this file

Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

spring.rabbitmq.host=rabbitmq

spring.rabbitmq.port=5672
spring.rabbitmq.username=orderflow
spring.rabbitmq.password=orderflow123
Expand Down
Loading