Geo-Locator é um serviço inovador que permite a gestão e a localização de pontos de interesse. Utilizando Quarkus, o framework Java supersônico, o Geo-Locator oferece performance e simplicidade no desenvolvimento de APIs RESTful.
- Docker instalado na máquina
- Maven instalado na máquina
- Java 17 ou superior
- Inicie o serviço do banco de dados
> docker compose up -d
Para iniciar a aplicação basta rodar o comando:
> mvn quarkus:dev
NOTE: Aplicação pronta para ultilização rodando na porta http://localhost:8085.
Para iniciar os testes da aplicação basta rodar o comando:
> mvn quarkus:test
NOTE: Com esse comando a aplicação roda os testes unitários e de integração no terminal, mas o vscode também pode rodar os testes.
- Existe uma outra possibilidade de rodar os testes e pode ser acessada via url
> http://localhost:8085/q/dev-ui/continuous-testing
- Para acessar o swagger basta iniciar a aplicação e acessar a url:
> http://localhost:8085/q/dev-ui/io.quarkus.quarkus-smallrye-openapi/swagger-ui
- Criar a entidade PointOfInterest:
- Definir atributos:
nome
,coordenadaX
,coordenadaY
(inteiros não negativos). - Garantir que os valores de
coordenadaX
ecoordenadaY
sejam não negativos.
- Definir atributos:
- Criar o repositório PointOfInterestRepository:
- Implementar os métodos para salvar e recuperar dados do banco de dados.
- Implementar o endpoint de cadastro:
- Criar o endpoint
POST /points-of-interest
. - Validar a entrada para garantir que
coordenadaX
ecoordenadaY
sejam não negativos. - Persistir os dados no banco de dados usando o repositório.
- Criar o endpoint
- Implementar o endpoint de listagem:
- Criar o endpoint
GET /points-of-interest
. - Recuperar todos os POIs do banco de dados usando o repositório.
- Retornar a lista de POIs no formato JSON.
- Criar o endpoint
- Implementar a lógica de proximidade:
- Criar um método para calcular a distância entre dois pontos
(x1, y1)
e(x2, y2)
usando a fórmula da distância Euclidiana:sqrt((x2 - x1)^2 + (y2 - y1)^2)
.
- Criar um método para calcular a distância entre dois pontos
- Implementar o endpoint de proximidade:
- Criar o endpoint
GET /points-of-interest/proximity
. - Receber parâmetros
x
,y
ed-max
na solicitação. - Recuperar todos os POIs do banco de dados usando o repositório.
- Filtrar os POIs com base na distância calculada para garantir que estejam dentro do raio
d-max
. - Retornar a lista de POIs que atendem ao critério de proximidade no formato JSON.
- Criar o endpoint