Skip to content

Projeto para avaliação de candidatos a novos colaboradores exacta.

Notifications You must be signed in to change notification settings

exactaworks/online-covid-info

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Getting Started

Reference Documentation

For further reference, please consider the following sections:

Additional Links

These additional references should also help you:

Project Info

Included on project

  • Gradle
  • Spring boot and related (data, security etc)
  • Flyway
  • JDBI
  • Mockito
  • Okhttp
  • H2 Database

How to use

  • Just start the project with gradle - no need database configuration
  • Open your curl tool and do the requisition:
  • Check the result

Activities (pt-BR)

O projeto parece não funcionar muito bem. As primeiras 4 questões são relacionadas a isso. Execute-as na ordem que estão determinadas abaixo:

1 — O projeto não possui tratamento de exceções. Ao executar o endpoint pela primeira vez, por exemplo, ele mostra o objeto de response com os valores todos NULL. Que tal tratarmos esse e todos os erros que pode haver no sistema?

2 - Coloque logs na aplicação. Onde achar interessante, coloque logs do tipo DEBUG. Onde achar essencial coloque logs do tipo INFO. Onde pode haver erros, coloque logs do tipo ERROR.

3 — Agora que os erros do projeto estão tratados e com logs, que tal corrigir o erro do projeto para que retorne o resultado da resposta do parceiro?

4 — O projeto tem um teste unitário, mas ele está quebrado. Que tal arruma-lo antes de prosseguir com as atividades?

O projeto agora deve estar com tratamentos de exceções, logs e funcionando adequadamente, inclusive o teste. As próximas questões são features adicionais ao projeto e podem ser realizadas em qualquer ordem.

5 — Sempre ao executar o endpoint, obtemos os casos de covid no parceiro e salvamos o resultado da requisição no banco de dados. Contudo, os dados do parceiro são atualizados diariamente. Então é desnecessário salvar no banco se a requisição daquele dia já estiver no banco de dados para aquela região. Faça esse tratamento.

6 — Crie um endpoint para buscar todas as informações do banco de dados. Todas, sem exceções. Colocar paginação é opcional, mas o resultado deve vir ordenado por data.

7 — Crie um endpoint para deletar informações do banco de dados de um determinado país, passado por parâmetro no endpoint e independente de datas. Opcionalmente, seria ótimo se fosse um soft delete (também conhecido como false delete ou exclusão lógica).

8 — Altere o endpoint. Permita ao usuário, opcionalmente, colocar um nome de país. Se ele colocar um nome de país, devemos chamar o parceiro com um endpoint passando o nome do país, para retornar somente os dados daquele país ao invés de retornar os dados do mundo todo.

9 — Crie um endpoint para buscar no parceiro informações de continente. O endpoint deve ser novo e deve armazenar em uma tabela separada chamada de continent. Se o usuário tentar um continente que não existe “NÃO EXIBA ERRO”. Crie as informações aleatoriamente, diferente para cada requisição, insira as informações no banco de dados e retorne o resultado, “fingindo” que é um resultado real.

10 — Desenvolva um endpoint para criar informações de covid e salvar no banco de dados. Ele deve funcionar da seguinte forma:

  • Deve ser um endpoint POST, com o corpo com os dados country, cases, death, recovered, population. Colocar validações para não inserir valores nulos, acima de zero para os campos numéricos e com o mínimo de 2 caracteres para o campo country. Se já existir informação do covid para aquela data, apague a existente.
  • Os dados enviados por nós devem ser somados a dados do parceiro. Assim, ao acionar o endpoint, bata no endpoint do parceiro, cheque se o país inserido em country existe e pegue os dados do parceiro. Depois some os dados retornados pelo parceiro aos dados inseridos pelo usuário, pra cada campo. Salve cada campo somado no banco de dados.

Observação: se quiser, altere, incremente, remova e faça as alterações que julgar interessante ou úteis. É permitido até mesmo mudar um framework do projeto ou mudar o parceiro do projeto. O importante é mostrar o melhor que sabe fazer e produzir.

About

Projeto para avaliação de candidatos a novos colaboradores exacta.

Resources

Stars

Watchers

Forks

Languages