Este projeto engloba um simples microsserviço para gerenciar o agendamento de manutenções em veículos.
Para instalar e usar o projeto tenha em sua máquina os seguintes requisitos:
- Git
- Java 17
- Docker
- Crie uma pasta e clone o projeto para sua máquina:
mkdir microsservicoAgendamento/
cd microsservicoAgendamento/
git clone git@github.com:rafaelmagalhaesguedes/MicrosservicoAgendamento.git
- Rodando o projeto com Docker:
Primeiro verifique se as portas 8080 (web service) e 5432 (postgres) não estão em uso em seu sistema.
Agora, suba os serviços docker com o comando abaixo
docker compose up -d
O serviço estará disponível na porta 8080 em seu localhost
- Abra seu navegador ou API client e acesse http://localhost:8080/
-
Java 17
-
Spring Boot
-
Postgres
-
Docker
-
Swagger (Para documentação da API)
-
IntelliJ (IDE de desenvolvimento)
-
Beekeeper Studio (Interface para gerenciar banco de dados)
-
Insomnia Client (API Client)
-
Builder: utilizamos o padrão criacional builder para construir objetos de forma mais controlada.
-
Strategy: utilizamos o padrão strategy para auxiliar na validação de dados sensíveis.
O projeto possui testes unitários para garantir a qualidade e a funcionalidade do código.
Para rodar os testes use o comando no terminal na raiz do projeto:
mvn test
O projeto utiliza o Swagger para documentação dos endpoints, acesse neste link.
O projeto utiliza encriptação para os dados sensíveis da aplicação, para facilitar o processo utilizamos a biblioteca JASYPT.
Lista com os principais endpoints da aplicação
Rota | Descrição |
---|---|
POST /customers | Cria um novo cliente |
POST /customers/{customerId}/vehicle | Cria um veículo associado a um cliente |
POST /customers/{customerId}/schedule | Cria um agendamento associado a um cliente |
GET /customers/{customerId}/schedule | Lista os agendamento associados a um cliente |
GET /customers/{customerId} | Busca os dados de um cliente |
PUT /customers/{customerId}/schedule/{scheduleId} | Cancela um agendamento associado a um cliente |
PUT /customers/{customerId}/address | Atualiza um endereço associado a um cliente |
REQUEST
{
"name": "Rafa Guedes",
"email": "rafa@email.com",
"numberPhone": "31997785451",
"document": "12345678910",
"cep": "31510090"
}
RESPONSE
{
"id": 1,
"name": "Rafa Guedes",
"email": "rafa@email.com",
"numberPhone": "31997785451",
"document": "12345678910",
"address": {
"cep": "31510-090",
"logradouro": "Rua Anita Garibaldi",
"bairro": "Candelária",
"localidade": "Belo Horizonte",
"uf": "MG"
}
}
REQUEST
{
"licensePlate": "RWT9988",
"model": "HB20",
"make": "Hyundai",
"year": 2022
}
RESPONSE
{
"id": 1,
"licensePlate": "RWT9988",
"model": "HB20",
"manufacturer": "Hyundai",
"year": 2022
}
REQUEST
{
"dateSchedule": "2024-10-14T10:10:23.828952827",
"descriptionService": "Manutenção preventiva e substituição da bomba d'água e válvula termostática."
}
RESPONSE
{
"id": 1,
"dateSchedule": "2024-10-14T10:10:23",
"descriptionService": "Manutenção preventiva e substituição da bomba d'água e válvula termostática.",
"status": "PENDENTE",
"customer": {
"id": 1,
"name": "Rafa Guedes",
"email": "rafa@email.com",
"numberPhone": "31997785451",
"vehicles": [
{
"model": "HB20",
"licensePlate": "RWT9988"
}
]
}
}
RESPONSE
[
{
"id": 1,
"dateSchedule": "2024-10-14T10:10:23",
"descriptionService": "Manutenção preventiva e substituição da bomba d'água e válvula termostática.",
"status": "PENDENTE",
"customer": {
"id": 1,
"name": "Rafa Guedes",
"email": "rafa@email.com",
"numberPhone": "31997785451",
"vehicles": [
{
"model": "HB20",
"licensePlate": "RWT9988"
}
]
}
},
{
"id": 2,
"dateSchedule": "2024-10-13T10:00:00",
"descriptionService": "Alinhamento, balancemanto e troca de pastilhas de freio.",
"status": "PENDENTE",
"customer": {
"id": 1,
"name": "Rafa Guedes",
"email": "rafa@email.com",
"numberPhone": "31997785451",
"vehicles": [
{
"model": "HB20",
"licensePlate": "RWT9988"
}
]
}
}
]
RESPONSE
{
"id": 1,
"name": "Rafael Guedes",
"email": "rafa@email.com",
"numberPhone": "31997785451",
"document": "12345678910",
"address": {
"cep": "31510-090",
"logradouro": "Rua Anita Garibaldi",
"bairro": "Candelária",
"localidade": "Belo Horizonte",
"uf": "MG"
},
"vehicles": [
{
"id": 1,
"licensePlate": "RWT9988",
"model": "HB20",
"make": "Hyundai",
"year": 2022
}
],
"schedules": [
{
"id": 1,
"dateSchedule": "2024-10-14T10:10:23",
"descriptionService": "Manutenção preventiva e substituição da bomba d'água e válvula termostática.",
"status": "PENDENTE"
},
{
"id": 2,
"dateSchedule": "2024-10-14T10:10:00",
"descriptionService": "Alinhamento, balancemanto e troca de pastilhas de freio.",
"status": "PENDENTE"
}
]
}
REQUEST
{
"cep": "45810-000",
"logradouro": "Rua Carlos C Silva",
"bairro": "Parque Ecológico",
"localidade": "Porto Seguro",
"uf": "BA"
}
RESPONSE
{
"id": 1,
"cep": "45810-000",
"logradouro": "Rua Carlos C Silva",
"bairro": "Parque Ecológico",
"localidade": "Porto Seguro",
"uf": "BA"
}
REQUEST
{
"status": "REALIZADO"
}
RESPONSE
{
"id": 1,
"dateSchedule": "2024-10-14T10:10:23",
"descriptionService": "Manutenção preventiva e substituição da bomba d'água e válvula termostática.",
"status": "REALIZADO",
"customer": {
"id": 1,
"name": "Rafa Guedes",
"email": "rafa@email.com",
"numberPhone": "31997785451",
"vehicles": [
{
"model": "HB20",
"licensePlate": "RWT9988"
}
]
}
}
Livre para usar, estudar, brincar, trabalhar, etc.
Rafa Guedes