Giter Site home page Giter Site logo

renaner123 / parking-control-api Goto Github PK

View Code? Open in Web Editor NEW

This project forked from michellibrito/parking-control-api

1.0 0.0 0.0 100 KB

Projeto consite em fazer uma API REST para ter controle de estacionamento de um condomínio utilizando Spring Boot, PostgreSQL e Docker

License: MIT License

Java 100.00%

parking-control-api's Introduction

Java CI with Maven License: MIT

Controle de veículos em condomínio

Criando uma API Rest com Spring Boot. Código base se encontra neste repositório.

Projeto consite em fazer uma API para ter controle de estacionamento de um condomínio. Foram e/ou estão sendo feitas as seguintes melhorias no projeto (para fins de estudo).

  • Usar CustomValidator - Verificar se o parâmetro passado (POST) já existe no banco
  • Receber argumentos no método findAll para listar por argumento
  • Fazer relacionamento entre as classes - OneToOne entre Car de ParkingSpot
  • Usar meios de conversões para alterar dados com o PUT - Converter
  • Inserir testes de unidade com JUnit 5 - ParkingSpotControllerTest
  • Inserir Logger com slf4j
  • Usar MapSruct e BeansUtils para converter entidades (testar com ambos) - BeanUtils OK
  • Consumir uma API externa - Spring WebClient
  • Usar container Docker para o banco de dados PostgreSQL
  • Gerar a documentação com OpenAPI.

Como compilar e executar esse projeto

Para executar a aplicação é necessário fazer o clone deste repositório com o comando abaixo.

git clone https://github.com/renaner123/Parking-Control-Api.git

Pré-requisitos

  • Ferramentas de desenvolvimento
    • Java JDK 17
    • Maven
    • pgAdmin 4
    • Postman ou Insomnia
  • Serviços
    • Servidor PostgreSQL

conexão com banco de dados

A configuração da conexão com o banco de dados é feita através do arquivo properties e deve ser conforme abaixo.

spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
spring.datasource.username=postgres
spring.datasource.password=banco123
spring.jpa.hibernate.ddl-auto=update

spring.jpa.properties.hibernate.jdbc.lab.nan_contextual_creation=true
spring.jpa.show-sql = false
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQL9Dialect

Container Docker PostgresSQL

Caso não tenha um servidor Postgres é possível subir um container usando Docker com o seguinte comando:

  sudo docker run --name postgres -p 5432:5432 -e POSTGRES_PASSWORD=your-password -d postgres

Caso queira gerenciar o banco de dados com pgAdmin, é possível usar um container para isso, por exemplo:

  docker run --rm -p 5050:5050 thajeztah/pgadmin4

Após executar e acessar o endereço gerado pelo container pgadmin4 (http://0.0.0.0:5050) é necessário adicionar o servidor em Add New Server.

Passos:

  1. Em General é necessário configurar um Name.
  2. Em Connection:
    1. Host name/addres -> é necessário colocar o endereço IP do host (não pode ser localhost)
    2. password -> inserir o password usado na criação do container
    3. Port e username devem ser alterados caso não tenha usado o padrão

Executando a aplicação

Para compilar o projeto e gerar o artefato jar é necessário executar o comando abaixo

mvn clean install

Com o projeto compilado para executar a aplicação deve-se usar o comando a seguir.

java -jar target/parking-control-0.0.1-SNAPSHOT.jar

A aplicação vai estar disposnível na porta 8080 e poderá ser acessado no seguinte endereço: http://localhost:8080

Serviços

Método Endpoint Serviço
GET localhost:8080/parking-spot/ Lista todas as vagas de estacionamento
GET localhost:8080/parking-spot/{id} Lista as informações de uma vaga pelo id
GET localhost:8080/parking-spot/block/{block} Lista todas as vagas de acordo com o bloco
POST localhost:8080/parking-spot Cadastra uma nova vaga. Recebe json no body
DELETE localhost:8080/parking-spot/{id} Deleta uma vaga pelo id
PUT localhost:8080/parking-spot/id{} Altera informações no cadastro. Recebe json no body

Com a aplicação em executação, também é possível acessar sua documentação OpenAPI no endereço localhost:8080/swagger-ui.html ou no arquvo parkingControl.yml.

Biblioteca externas

Abaixo as bibliotecas que auxiliaram no desenvolvimento do projeto.

Biblioteca Função Licença
Spring Boot Framework ORM Apache 2.0
junit Testes unitários EPL 2.0
slf4j Mensagens de log MIT
PostgreSQL Conexão com PostgreSQL PostgreSQL

parking-control-api's People

Contributors

renaner123 avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.