Conectando na base de dados

This commit is contained in:
Gustavo Barbosa 2025-07-31 14:58:23 -03:00
parent 0807d760b1
commit abe72f1e5b
5 changed files with 101 additions and 47 deletions

55
pom.xml
View file

@ -9,13 +9,15 @@
<properties>
<quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
<quarkus.platform.group-id>io.quarkus.platform</quarkus.platform.group-id>
<quarkus.platform.version>3.24.5</quarkus.platform.version>
<compiler-plugin.version>3.11.0</compiler-plugin.version>
<quarkus.platform.version>3.25.0</quarkus.platform.version>
<compiler-plugin.version>3.14.0</compiler-plugin.version>
<surefire-plugin.version>3.1.2</surefire-plugin.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<maven.compiler.parameters>true</maven.compiler.parameters>
<lombok.version>1.18.38</lombok.version>
<hibernate.version></hibernate.version>
</properties>
<dependencyManagement>
@ -31,15 +33,41 @@
</dependencyManagement>
<dependencies>
<!-- Geração de código -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.38</version>
<version>${lombok.version}</version>
</dependency>
<!-- HTTP -->
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-rest-jackson</artifactId>
</dependency>
<!-- Validação -->
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-hibernate-validator</artifactId>
</dependency>
<!-- Persistência -->
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-hibernate-orm</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-jdbc-postgresql</artifactId>
</dependency>
<dependency>
<groupId>jakarta.data</groupId>
<artifactId>jakarta.data-api</artifactId>
</dependency>
<!-- Testes -->
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-junit5</artifactId>
@ -50,6 +78,7 @@
<artifactId>rest-assured</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
@ -57,6 +86,20 @@
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>${compiler-plugin.version}</version>
<configuration>
<parameters>true</parameters>
<annotationProcessorPaths>
<path>
<groupId>org.hibernate.orm</groupId>
<artifactId>hibernate-processor</artifactId>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
@ -109,7 +152,9 @@
</goals>
<configuration>
<systemPropertyVariables>
<native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path>
<native.image.path>
${project.build.directory}/${project.build.finalName}-runner
</native.image.path>
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
<maven.home>${maven.home}</maven.home>
</systemPropertyVariables>
@ -121,4 +166,4 @@
</build>
</profile>
</profiles>
</project>
</project>

View file

@ -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;
}

View file

@ -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<UUID, Jogo> 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<Jogo> listar() {
return List.copyOf(jogos.values());
}
@Repository
public interface ArmarioJogo extends CrudRepository<Jogo, UUID> {
}

View file

@ -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<Jogo> 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);
}
}

View file

@ -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=*