Skip to content

eduardodarocha/cities-api-DIO

Repository files navigation

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

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published