diff --git a/pom.xml b/pom.xml
index ee88ca1..804ed82 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,13 +9,15 @@
quarkus-bom
io.quarkus.platform
- 3.24.5
- 3.11.0
+ 3.25.0
+ 3.14.0
3.1.2
UTF-8
17
17
true
+ 1.18.38
+
@@ -31,15 +33,41 @@
+
+
org.projectlombok
lombok
- 1.18.38
+ ${lombok.version}
+
+
io.quarkus
quarkus-rest-jackson
+
+
+
+ io.quarkus
+ quarkus-hibernate-validator
+
+
+
+
+ io.quarkus
+ quarkus-hibernate-orm
+
+
+ io.quarkus
+ quarkus-jdbc-postgresql
+
+
+ jakarta.data
+ jakarta.data-api
+
+
+
io.quarkus
quarkus-junit5
@@ -50,6 +78,7 @@
rest-assured
test
+
@@ -57,6 +86,20 @@
maven-compiler-plugin
${compiler-plugin.version}
+
+ true
+
+
+ org.hibernate.orm
+ hibernate-processor
+
+
+ org.projectlombok
+ lombok
+ ${lombok.version}
+
+
+
maven-surefire-plugin
@@ -109,7 +152,9 @@
- ${project.build.directory}/${project.build.finalName}-runner
+
+ ${project.build.directory}/${project.build.finalName}-runner
+
org.jboss.logmanager.LogManager
${maven.home}
@@ -121,4 +166,4 @@
-
+
\ No newline at end of file
diff --git a/src/main/java/casa/sotu/organizajogos/api/modelo/Jogo.java b/src/main/java/casa/sotu/organizajogos/api/modelo/Jogo.java
index 9c1f25a..a1a4b28 100644
--- a/src/main/java/casa/sotu/organizajogos/api/modelo/Jogo.java
+++ b/src/main/java/casa/sotu/organizajogos/api/modelo/Jogo.java
@@ -2,11 +2,30 @@ package casa.sotu.organizajogos.api.modelo;
import java.util.UUID;
-import lombok.Data;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.Id;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
-@Data
+@Getter
+@Setter
+@Entity
public class Jogo {
+
+ @Id
private UUID id;
+
+ @NotBlank
private String nome;
+
+ @NotNull
+ @Enumerated(EnumType.STRING)
private Estado estado;
+
+ @NotBlank
+ private String loja;
}
diff --git a/src/main/java/casa/sotu/organizajogos/api/persistencia/ArmarioJogo.java b/src/main/java/casa/sotu/organizajogos/api/persistencia/ArmarioJogo.java
index eeca413..a09b112 100644
--- a/src/main/java/casa/sotu/organizajogos/api/persistencia/ArmarioJogo.java
+++ b/src/main/java/casa/sotu/organizajogos/api/persistencia/ArmarioJogo.java
@@ -1,31 +1,11 @@
package casa.sotu.organizajogos.api.persistencia;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
import java.util.UUID;
import casa.sotu.organizajogos.api.modelo.Jogo;
-import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.data.repository.CrudRepository;
+import jakarta.data.repository.Repository;
-@ApplicationScoped
-public class ArmarioJogo {
- private Map jogos = new HashMap<>();
-
- public void criar(Jogo jogo) {
- jogo.setId(UUID.randomUUID());
- jogos.put(jogo.getId(), jogo);
- }
-
- public Jogo pegar(UUID id) {
- return jogos.get(id);
- }
-
- public void remover(UUID id) {
- jogos.remove(id);
- }
-
- public List listar() {
- return List.copyOf(jogos.values());
- }
+@Repository
+public interface ArmarioJogo extends CrudRepository {
}
diff --git a/src/main/java/casa/sotu/organizajogos/api/recursos/RecursoJogo.java b/src/main/java/casa/sotu/organizajogos/api/recursos/RecursoJogo.java
index 937a05e..3c889ee 100644
--- a/src/main/java/casa/sotu/organizajogos/api/recursos/RecursoJogo.java
+++ b/src/main/java/casa/sotu/organizajogos/api/recursos/RecursoJogo.java
@@ -5,8 +5,10 @@ import java.util.UUID;
import casa.sotu.organizajogos.api.modelo.Jogo;
import casa.sotu.organizajogos.api.persistencia.ArmarioJogo;
+import jakarta.validation.Valid;
import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.GET;
+import jakarta.ws.rs.NotFoundException;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.PUT;
import jakarta.ws.rs.Path;
@@ -14,41 +16,41 @@ import jakarta.ws.rs.PathParam;
@Path("jogos")
public class RecursoJogo {
-
+
private ArmarioJogo armarioJogo;
-
+
public RecursoJogo(ArmarioJogo armarioJogo) {
this.armarioJogo = armarioJogo;
-
+
}
-
+
@GET
public List listaJogos() {
- return armarioJogo.listar();
+ return armarioJogo.findAll().toList();
}
-
+
@GET
@Path("{id}")
public Jogo pegaJogo(@PathParam("id") UUID id) {
- return this.armarioJogo.pegar(id);
+ return this.armarioJogo.findById(id).orElseThrow(NotFoundException::new);
}
-
+
@POST
- public void criaJogo(Jogo jogo) {
- this.armarioJogo.criar(jogo);
+ public void criaJogo(@Valid Jogo jogo) {
+ jogo.setId(UUID.randomUUID());
+ this.armarioJogo.insert(jogo);
}
-
+
@PUT
@Path("{id}")
- public void atualizaJogo(@PathParam("id") UUID id, Jogo jogo) {
- Jogo atual = this.armarioJogo.pegar(id);
- atual.setNome(jogo.getNome());
- atual.setEstado(jogo.getEstado());
+ public void atualizaJogo(@PathParam("id") UUID id, @Valid Jogo jogo) {
+ jogo.setId(id);
+ armarioJogo.update(jogo);
}
@DELETE
@Path("{id}")
public void remove(@PathParam("id") UUID id) {
- this.armarioJogo.remover(id);
+ this.armarioJogo.deleteById(id);
}
}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index dc78bc1..737ea16 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1,2 +1,10 @@
# Quarkus Configuration file
# key = value
+quarkus.datasource.db-kind=pg
+quarkus.datasource.username=postgres
+quarkus.datasource.password=${POSTGRES_PASSWORD}
+quarkus.datasource.jdbc.url=jdbc:postgresql://${POSTGRES_URL}/
+quarkus.hibernate-orm.schema-management.strategy=update
+%dev.quarkus.hibernate-orm.schema-management.strategy=drop-and-create
+%dev.quarkus.hibernate-orm.dev-ui.allow-hql=true
+%dev.quarkus.datasource.dev-ui.allowed-db-host=*
\ No newline at end of file