/cities-api

Repositório referente ao projeto de API Rest de consulta de distância de cidades do Brasil

Primary LanguageJava

Cities API

Neste primeiro projeto desenvolvido através do Bootcamp promovido pela NTT Data - Quality Assurance Beginner #3 em parceria com a Digital Innovation One e com participação dos intrutores Denilson Bonatti, Lucas Alves, Akinely Reis, Rui Rodrigues, André Gomes e toda a excelente equipe que disponibilizou tempo, dedicação, e sobretudo experiência na transmissão dos conteúdos e que nos propocionou agregar conhecimento e nos permitir adentrar na produção e desenvolvimento de uma API Rest do zero para consultar as distâncias das cidades do Brasil. Neste projeto nos deparamos com uma série de requisitos na qual tivemos por algumas ocasiões o primeiro contato, nos levando a começar a entender, explorar e integrar cada ferramenta.

  • Configuração e instalação da IntelliJ IDEA e o uso de java;
  • A utilização do spring boot através do Spring Initializr, a utilização do Gradle, as configurações das properties e injeção das dependências;
  • A utilização e configuração do Docker Desktop para utilização dos containers e a transmissão do banco de dados para dentro do container com Postgres;
  • O uso do Postman (uso do formato JSON) e do Heroku (banco de dados na nuvem).
  • As boas práticas de utilização do Git;

Apesar do projeto final ser demonstrado com a a utilização de LInux, pudemos realizá-lo em ambiente Windows executando com Power Shell, bastando por algumas vezes buscar o conhecimento além do disponibilizado na plataforma e não o bastante as aulas de cursos fora deste Bootcamp porém dentro da plataforma DIO nos fundamentou para o continuo aprendizado.

Foi muito proveitoso aprender e desenvolver a API acompanhando as instruções, entendendo e reproduzindo em nossa máquina local e na nuvem e nos permitindo vislumbrar o quão as tecnologias integradas podem ampliar e facilitar o desenvolvimentos de grandes projetos.

Deixo abaixo o README do instutor para consultas futuras.

Requirements

  • Linux
  • Git
  • Java 8
  • Docker
  • IntelliJ Community
  • Heroku CLI

DataBase

Postgres

docker run --name cities-db -d -p 5432:5432 -e POSTGRES_USER=postgres_user_city -e POSTGRES_PASSWORD=super_password -e POSTGRES_DB=cities postgres

Populate

cd ~/workspace/sql-paises-estados-cidades/PostgreSQL

docker run -it --rm --net=host -v $PWD:/tmp postgres /bin/bash

psql -h localhost -U postgres_user_city cities -f /tmp/pais.sql
psql -h localhost -U postgres_user_city cities -f /tmp/estado.sql
psql -h localhost -U postgres_user_city cities -f /tmp/cidade.sql

psql -h localhost -U postgres_user_city cities

CREATE EXTENSION cube; 
CREATE EXTENSION earthdistance;

Access

docker exec -it cities-db /bin/bash

psql -U postgres_user_city cities

Query Earth Distance

Point

select ((select lat_lon from cidade where id = 4929) <@> (select lat_lon from cidade where id=5254)) as distance;

Cube

select earth_distance(
    ll_to_earth(-21.95840072631836,-47.98820114135742), 
    ll_to_earth(-22.01740074157715,-47.88600158691406)
) as distance;

Spring Boot

Spring Data

Properties

Types

Heroku

Code Quality

PMD

Checkstyle

wget https://raw.githubusercontent.com/checkstyle/checkstyle/master/src/main/resources/google_checks.xml