Skip to content
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
52 changes: 51 additions & 1 deletion VemProFutApi/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,59 @@
# VemProFut! API (Em andamento...)
# VemProFut! API (Concluída)
![Java](https://img.shields.io/badge/java-%23ED8B00.svg?style=for-the-badge&logo=openjdk&logoColor=white)
![Spring](https://img.shields.io/badge/spring-%236DB33F.svg?style=for-the-badge&logo=spring&logoColor=white)
![MySQL](https://img.shields.io/badge/mysql-4479A1.svg?style=for-the-badge&logo=mysql&logoColor=white)
![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge&logo=docker&logoColor=white)

API base de todo o projeto VemProFut!

## Organização das pastas:

```
VemProFutApi/
├── src/ → Código-fonte principal da aplicação
│ ├── main/java/... → Classes Java (controllers, services, repositories, models)
│ ├── main/resources → Configurações (application.properties, templates, static)
│ └── test/java/... → Testes automatizados
├── mysql-init/ → Scripts de inicialização do banco MySQL
│ └── *.sql → Criação de tabelas, inserts iniciais
├── .mvn/wrapper/ → Arquivos do Maven Wrapper (executar sem instalar Maven)
├── Dockerfile → Configuração para criar imagem Docker da API
├── Docker-compose.yml → Orquestração de containers (API + MySQL)
├── pom.xml → Arquivo de configuração do Maven (dependências e build)
├── mvnw / mvnw.cmd → Scripts para rodar Maven Wrapper (Linux/Windows)
├── .env.exemple → Exemplo de variáveis de ambiente (configuração DB, etc.)
├── .gitignore → Arquivos/pastas ignorados pelo Git
├── .gitattributes → Configurações de atributos do Git
├── excludeFilter.xml → Configuração de exclusões (provavelmente Sonar ou Checkstyle)
└── README.md → Documentação inicial da API
```

# 🚀 Como rodar a aplicação

A aplicação suporta múltiplos perfis (`dev`, `test`, `prod`) configurados via **Spring Profiles**.

---
## 🏭 Ambiente de Produção (`prod`)

Rodar com **Docker Compose**:
```bash
docker compose up
```
## 🔧 Ambiente de Desenvolvimento (`dev`)

Rodar diretamente com **Maven**:
```bash
mvn spring-boot:run -Dspring-boot.run.profiles=dev
```
## 🧪 Ambiente de Testes (`test`)

Rodar diretamente com **Maven**:
```bash
mvn test
```

16 changes: 12 additions & 4 deletions VemProFutApi/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -133,12 +133,12 @@
<scope>test</scope>
</dependency>

<!--Add Agent preparado para o JDK 22+ e futuras versões, sem risco de quebra-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
<groupId>org.mockito</groupId>
<artifactId>mockito-inline</artifactId>
<version>5.2.0</version>
</dependency>

</dependencies>

<build>
Expand Down Expand Up @@ -219,6 +219,14 @@
</execution>
</executions>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.2.5</version>
</plugin>


</plugins>
</build>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import br.com.vemprofut.mappers.IHistoricoPeladeiroMapper;
import br.com.vemprofut.models.DTOs.HistoricoPeladeiroDTO;
import br.com.vemprofut.models.PeladeiroModel;
import br.com.vemprofut.models.enuns.PeDominante;
import br.com.vemprofut.repositories.PeladeiroRepository;
import br.com.vemprofut.services.IHistoricoPeladeiroService;
import jakarta.servlet.http.HttpServletRequest;
Expand Down Expand Up @@ -62,7 +63,7 @@ public void onAuthenticationSuccess(
usuario.setApelido(name);
usuario.setDescricao("Usuário criado via OAuth2");
usuario.setWhatsapp("000000000");
usuario.setPeDominante("Destro"); // escolha padrão
usuario.setPeDominante(PeDominante.DESTRO); // escolha padrão
usuario.setAuthProvider(provider);
usuario.setFotoUrl(picture);
usuario.setHistoricoPeladeiro(historicoPeladeiroMapper.toModel(historicoPeladeiro));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package br.com.vemprofut.controllers.request;

import br.com.vemprofut.models.enuns.PeDominante;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
Expand All @@ -9,5 +10,5 @@ public record SavePeladeiroRequestDTO(
@Email String email,
@NotNull String apelido,
@NotBlank String descricao,
@NotNull String peDominante,
@NotNull PeDominante peDominante,
@NotBlank String whatsapp) {}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package br.com.vemprofut.controllers.request;

import br.com.vemprofut.models.enuns.PeDominante;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
Expand All @@ -9,5 +10,5 @@ public record UpdatePeladeiroRequestDTO(
@Email String email,
@NotNull String apelido,
@NotBlank String descricao,
@NotNull String peDominante,
@NotNull PeDominante peDominante,
@NotBlank String whatsapp) {}
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
package br.com.vemprofut.controllers.response;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class CartoesResumoResponseDTO {
private Integer azul;
private Integer amarelo;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package br.com.vemprofut.controllers.response;

import br.com.vemprofut.models.enuns.PeDominante;
import com.fasterxml.jackson.annotation.JsonProperty;

public record PeladeiroDetailResponse(
Expand All @@ -9,5 +10,5 @@ public record PeladeiroDetailResponse(
@JsonProperty("apelido") String apelido,
@JsonProperty("descricao") String descricao,
@JsonProperty("whatsapp") String whatsapp,
@JsonProperty("peDominante") String peDominante,
@JsonProperty("peDominante") PeDominante peDominante,
@JsonProperty("numeroCartoes") CartoesResumoResponseDTO cartoes) {}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package br.com.vemprofut.controllers.response;

import br.com.vemprofut.models.enuns.PeDominante;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;

Expand All @@ -9,7 +10,7 @@ public record SavePeladeiroResponseDTO(
@JsonProperty("email") String email,
@JsonProperty("apelido") String apelido,
@JsonProperty("descricao") String descricao,
@JsonProperty("peDominante") String peDominante,
@JsonProperty("peDominante") PeDominante peDominante,
@JsonProperty("whatsapp") String whatsapp,
@JsonProperty("historicoPeladeiro") Long historicoPeladeiro,
@JsonProperty("fotoUrl") String fotoUrl,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package br.com.vemprofut.controllers.response;

import br.com.vemprofut.models.enuns.PeDominante;
import com.fasterxml.jackson.annotation.JsonProperty;

public record UpdatePeladeiroResponseDTO(
Expand All @@ -8,5 +9,5 @@ public record UpdatePeladeiroResponseDTO(
@JsonProperty("apelido") String apelido,
@JsonProperty("descricao") String descricao,
@JsonProperty("whatsapp") String whatsapp,
@JsonProperty("peDominante") String peDominante,
@JsonProperty("peDominante") PeDominante peDominante,
@JsonProperty("fotoURL") String fotoUrl) {}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package br.com.vemprofut.models;

import br.com.vemprofut.models.enuns.PeDominante;
import jakarta.persistence.*;
import java.util.ArrayList;
import java.util.List;
Expand All @@ -19,7 +20,7 @@ public PeladeiroModel(
String apelido,
String descricao,
String whatsapp,
String peDominante) {
PeDominante peDominante) {
this.nome = nome;
this.email = email;
this.apelido = apelido;
Expand Down Expand Up @@ -49,7 +50,8 @@ public PeladeiroModel(
private String whatsapp;

@Column(name = "pe_dominante_peladeiro", nullable = false, length = 10)
private String peDominante;
@Enumerated(EnumType.STRING) // salva como texto no banco
private PeDominante peDominante; // TODO: mudar para usar um enum...

@ToString.Exclude
@OneToOne
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public class PeladeiroService implements IPeladeiroService {

@Autowired private PeladeiroRepository repository;

@Autowired private IPeladeiroMapper IPeladeiroMapper;
@Autowired private IPeladeiroMapper peladeiroMapper;

@Autowired private IHistoricoPeladeiroMapper historicoMapper;

Expand All @@ -42,14 +42,14 @@ public class PeladeiroService implements IPeladeiroService {
public SavePeladeiroResponseDTO create(SavePeladeiroRequestDTO dto) {
queryService.verifyEmail(dto.email());
log.info("Email verificado!");
PeladeiroModel peladeiroModel = IPeladeiroMapper.saveRequestToModel(dto);
PeladeiroModel peladeiroModel = peladeiroMapper.saveRequestToModel(dto);
PeladeiroModel peladeiroSalvo = repository.save(peladeiroModel);

HistoricoPeladeiroDTO historico = historicoPeladeiroService.create();
peladeiroSalvo.setHistoricoPeladeiro(historicoMapper.toModel(historico));

log.info("Peladeiro cadastrado com sucesso!");
return IPeladeiroMapper.modelToSaveResponse(repository.save(peladeiroSalvo));
return peladeiroMapper.modelToSaveResponse(repository.save(peladeiroSalvo));
}

@Override
Expand All @@ -66,7 +66,7 @@ public UpdatePeladeiroResponseDTO update(Long id, UpdatePeladeiroRequestDTO dto)
peladeiroModel.setPeDominante(dto.peDominante());

log.info("Peladeiro alterado com sucesso!");
return IPeladeiroMapper.modelToUpdateResponse(repository.save(peladeiroModel));
return peladeiroMapper.modelToUpdateResponse(repository.save(peladeiroModel));
}

@Override
Expand Down Expand Up @@ -99,7 +99,7 @@ public PeladeiroModel findByIdModel(Long id) {
//
// return repository.findAll()
// .stream()
// .map(IPeladeiroMapper::toDTO)
// .map(peladeiroMapper::toDTO)
// .toList();
// }

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,6 @@
package br.com.vemprofut;

import org.springframework.boot.test.context.SpringBootTest;


class VemProFutApplicationTests {


void contextLoads() {
}

void contextLoads() {}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import br.com.vemprofut.models.BanimentoModel;
import br.com.vemprofut.models.FutModel;
import br.com.vemprofut.models.PeladeiroModel;
import br.com.vemprofut.models.enuns.PeDominante;
import br.com.vemprofut.repositories.BanimentoRepository;
import br.com.vemprofut.repositories.FutRepository;
import br.com.vemprofut.repositories.PeladeiroRepository;
Expand Down Expand Up @@ -57,7 +58,7 @@ public void save_quandoBanimentoValido_retornaIdGerado() {
"Apelido",
"descricao qualquer",
"81999999999",
"Destro"));
PeDominante.DESTRO));

BanimentoModel banimentoModel =
new BanimentoModel(
Expand Down Expand Up @@ -86,7 +87,7 @@ public void findAll_quandoExistemRegistros_retornaListaComTodos() {
"Apelido",
"descricao qualquer",
"81999999999",
"Destro"));
PeDominante.DESTRO));
PeladeiroModel peladeiroModel2 =
peladeiroRepository.saveAndFlush(
new PeladeiroModel(
Expand All @@ -95,7 +96,7 @@ public void findAll_quandoExistemRegistros_retornaListaComTodos() {
"Apelido2",
"descricao qualquer2",
"81999999999",
"Destro"));
PeDominante.DESTRO));

BanimentoModel banimentoModel1 =
new BanimentoModel(
Expand Down Expand Up @@ -132,7 +133,7 @@ public void deleteById_quandoIdBanimentoExistir_registroRemovido() {
"Apelido",
"descricao qualquer",
"81999999999",
"Destro"));
PeDominante.DESTRO));

BanimentoModel banimentoModel =
new BanimentoModel(
Expand Down
Loading