Projeto de uma API para gerenciar um estacionamento de carros e motos.
- Cadastro de Estabelecimento (CRUD)
- Cadastro de Veículos (CRUD)
- Entrada e saída de veículos
- Geração de relatório para controle de entradas e saídas
Antes de começar, é necessário que você tenha instalado na sua máquina as seguintes ferramentas:
- JDK (nesse projeto foi utilizada a 16, você pode baixar aqui)
- Uma IDE ou editor de código (para o desenvolvimento do projeto foi utilizado o IntelliJ, você pode baixar aqui)
- PostgreSQL (aqui)
- Clone o repositório na sua máquina com
git clone https://github.com/gabrieladipoggio/gerenciador-estacionamentos.git
- No PostgreSQL, crie o banco de dados 'desafio', usuário e senha
- Abra o projeto no editor de código de sua preferência
- Entre no arquivo
application.properties
- Altere as propriedades
spring.datasource.username
espring.datasource.password
para o nome de usuário e senha criados no passo anterior - O projeto está pronto para rodar!
Para a documentação do projeto foi utilizado o Swagger. Com o projeto rodando na sua máquina, você pode acessá-lo aqui. O projeto também conta com alguns casos de testes e tratamento de exceções.
O projeto conta com duas classes de Controllers, representando o Veículo (Vehicle) e a Empresa (Company). Dessa forma, foi desenvolvido o CRUD completo de cada uma dessas classes, bem como alguns métodos auxiliares, sendo eles:
- /company/report: gera um arquivo .csv contendo uma listagem de todos os carros que passaram pelo estacionamento nas últimas 24 horas, além da contagem de quantos veículos estão estacionados no momento (especificando o número de carros e motos) e o número total de entradas e saídas do dia.
- /vehicle/addToGarage: método responsável por adicionar um carro no estacionamento, com base no id do estabelecimento e placa do carro previamente cadastrado.
- /vehicle/removeFromGarage: metódo responsável por remover um carro do estacionamento, com base no id do estabelecimento e placa do carro previamente cadastrado.
- /vehicle/search/{registration}: método responsável por buscar um carro no banco de dados, com base na sua placa.