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> <properties>
<quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id> <quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
<quarkus.platform.group-id>io.quarkus.platform</quarkus.platform.group-id> <quarkus.platform.group-id>io.quarkus.platform</quarkus.platform.group-id>
<quarkus.platform.version>3.24.5</quarkus.platform.version> <quarkus.platform.version>3.25.0</quarkus.platform.version>
<compiler-plugin.version>3.11.0</compiler-plugin.version> <compiler-plugin.version>3.14.0</compiler-plugin.version>
<surefire-plugin.version>3.1.2</surefire-plugin.version> <surefire-plugin.version>3.1.2</surefire-plugin.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>17</maven.compiler.source> <maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target> <maven.compiler.target>17</maven.compiler.target>
<maven.compiler.parameters>true</maven.compiler.parameters> <maven.compiler.parameters>true</maven.compiler.parameters>
<lombok.version>1.18.38</lombok.version>
<hibernate.version></hibernate.version>
</properties> </properties>
<dependencyManagement> <dependencyManagement>
@ -31,15 +33,41 @@
</dependencyManagement> </dependencyManagement>
<dependencies> <dependencies>
<!-- Geração de código -->
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId> <artifactId>lombok</artifactId>
<version>1.18.38</version> <version>${lombok.version}</version>
</dependency> </dependency>
<!-- HTTP -->
<dependency> <dependency>
<groupId>io.quarkus</groupId> <groupId>io.quarkus</groupId>
<artifactId>quarkus-rest-jackson</artifactId> <artifactId>quarkus-rest-jackson</artifactId>
</dependency> </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> <dependency>
<groupId>io.quarkus</groupId> <groupId>io.quarkus</groupId>
<artifactId>quarkus-junit5</artifactId> <artifactId>quarkus-junit5</artifactId>
@ -50,6 +78,7 @@
<artifactId>rest-assured</artifactId> <artifactId>rest-assured</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
</dependencies> </dependencies>
<build> <build>
@ -57,6 +86,20 @@
<plugin> <plugin>
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>${compiler-plugin.version}</version> <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>
<plugin> <plugin>
<artifactId>maven-surefire-plugin</artifactId> <artifactId>maven-surefire-plugin</artifactId>
@ -109,7 +152,9 @@
</goals> </goals>
<configuration> <configuration>
<systemPropertyVariables> <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> <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
<maven.home>${maven.home}</maven.home> <maven.home>${maven.home}</maven.home>
</systemPropertyVariables> </systemPropertyVariables>
@ -121,4 +166,4 @@
</build> </build>
</profile> </profile>
</profiles> </profiles>
</project> </project>

View file

@ -2,11 +2,30 @@ package casa.sotu.organizajogos.api.modelo;
import java.util.UUID; 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 { public class Jogo {
@Id
private UUID id; private UUID id;
@NotBlank
private String nome; private String nome;
@NotNull
@Enumerated(EnumType.STRING)
private Estado estado; private Estado estado;
@NotBlank
private String loja;
} }

View file

@ -1,31 +1,11 @@
package casa.sotu.organizajogos.api.persistencia; package casa.sotu.organizajogos.api.persistencia;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID; import java.util.UUID;
import casa.sotu.organizajogos.api.modelo.Jogo; import casa.sotu.organizajogos.api.modelo.Jogo;
import jakarta.enterprise.context.ApplicationScoped; import jakarta.data.repository.CrudRepository;
import jakarta.data.repository.Repository;
@ApplicationScoped @Repository
public class ArmarioJogo { public interface ArmarioJogo extends CrudRepository<Jogo, UUID> {
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());
}
} }

View file

@ -5,8 +5,10 @@ import java.util.UUID;
import casa.sotu.organizajogos.api.modelo.Jogo; import casa.sotu.organizajogos.api.modelo.Jogo;
import casa.sotu.organizajogos.api.persistencia.ArmarioJogo; import casa.sotu.organizajogos.api.persistencia.ArmarioJogo;
import jakarta.validation.Valid;
import jakarta.ws.rs.DELETE; import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.GET; import jakarta.ws.rs.GET;
import jakarta.ws.rs.NotFoundException;
import jakarta.ws.rs.POST; import jakarta.ws.rs.POST;
import jakarta.ws.rs.PUT; import jakarta.ws.rs.PUT;
import jakarta.ws.rs.Path; import jakarta.ws.rs.Path;
@ -14,41 +16,41 @@ import jakarta.ws.rs.PathParam;
@Path("jogos") @Path("jogos")
public class RecursoJogo { public class RecursoJogo {
private ArmarioJogo armarioJogo; private ArmarioJogo armarioJogo;
public RecursoJogo(ArmarioJogo armarioJogo) { public RecursoJogo(ArmarioJogo armarioJogo) {
this.armarioJogo = armarioJogo; this.armarioJogo = armarioJogo;
} }
@GET @GET
public List<Jogo> listaJogos() { public List<Jogo> listaJogos() {
return armarioJogo.listar(); return armarioJogo.findAll().toList();
} }
@GET @GET
@Path("{id}") @Path("{id}")
public Jogo pegaJogo(@PathParam("id") UUID id) { public Jogo pegaJogo(@PathParam("id") UUID id) {
return this.armarioJogo.pegar(id); return this.armarioJogo.findById(id).orElseThrow(NotFoundException::new);
} }
@POST @POST
public void criaJogo(Jogo jogo) { public void criaJogo(@Valid Jogo jogo) {
this.armarioJogo.criar(jogo); jogo.setId(UUID.randomUUID());
this.armarioJogo.insert(jogo);
} }
@PUT @PUT
@Path("{id}") @Path("{id}")
public void atualizaJogo(@PathParam("id") UUID id, Jogo jogo) { public void atualizaJogo(@PathParam("id") UUID id, @Valid Jogo jogo) {
Jogo atual = this.armarioJogo.pegar(id); jogo.setId(id);
atual.setNome(jogo.getNome()); armarioJogo.update(jogo);
atual.setEstado(jogo.getEstado());
} }
@DELETE @DELETE
@Path("{id}") @Path("{id}")
public void remove(@PathParam("id") UUID 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 # Quarkus Configuration file
# key = value # 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=*