eduardodarocha / cities-api-DIO

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Projeto realizado no Bootcamp Everis Quality Assurance Beginner da Digital Innovation One

Cities API

Construindo uma API Rest de consulta de cidades do Brasil do zero até a produção

Neste projeto tivemos o desafio de desenvolver uma API Rest de consulta de cidades do Brasil com dados comparativos. Conhecemos as boas práticas de Java e do Spring, populando o banco de dados Postgresql dentro de um container Docker e criando um serviço para o cálculo de distância entre cidades.

Requirements

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 (Linux)
docker run -it --rm --net=host -v "%CD%":/tmp postgres /bin/bash (Windows)

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;

Deploy Heroku

heroku create

git push heroku main

heroku logs --tail
CTRL + c

heroku addons:create heroku-postgresql
  • entrar no diretorio dos script para popular o DB do Heroku
docker run -it --rm --net=host -v $PWD:/tmp postgres /bin/bash

psql -h <host do postgresql no heroku> -U <usuario do postgresql no heroku> <database do Heroku> -f /tmp/pais.sql
psql -h <host do postgresql no heroku> -U <usuario do postgresql no heroku> <database do Heroku> -f /tmp/estado.sql
psql -h <host do postgresql no heroku> -U <usuario do postgresql no heroku> <database do Heroku> -f /tmp/cidade.sql

-entrar no Postgresql do Heroku e adicionar as extensões:

psql -h <host do postgresql no heroku> -U <usuario do postgresql no heroku> <database do Heroku>

CREATE EXTENSION cube;

CREATE EXTENSION earthdistance;
  • Minha API pode ser achada aqui:

https://fierce-scrubland-28454.herokuapp.com/

  • endpoints:
    • /countries
    • /countries/1
    • /countries?page=0&size=10&sort=id,asc
    • /countries?page=0&size=10&sort=name,asc
    • /states
    • /cities
    • /distances/by-cube?from=4929&to=5254
    • /distances/by-points?from=4929&to=5254

Spring Boot

  • Java 8
  • Gradle Project
  • Jar
  • Spring Web
  • Spring Data JPA
  • PostgreSQL Driver

Spring Data

Properties

Types

Heroku

Code Quality

PMD

Checkstyle

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

About

License:MIT License


Languages

Language:PLSQL 60.0%Language:TSQL 38.3%Language:Java 1.7%