Gostaríamos de criar um jogo de Star Wars com algumas informações da franquia. E para possibilitar a equipe de frontend criar essa aplicação, precisamos desenvolver uma API REST que contenha os dados dos planetas da franquia.
Para cada planeta, os seguintes dados devem ser obtidos do banco de dados da aplicação, inseridos a partir de requisições disparadas para a API pública do Star Wars:
- Nome, clima e terreno;
- Para cada planeta também devemos ter os filmes com o nome, diretor e data de lançamento;
Todas as informações necessárias podem ser obtidas pela API pública do Star Wars.
- Funcionalidades desejadas:
- Carregar um planeta da API através do Id
- Listar os planetas
- Buscar planeta por nome
- Buscar por ID
- Remover planeta
- utilize git ou hg para fazer o controle de versão da solução do teste e hospede-a no Github ou Bitbucket;
- armazene os dados no banco de dados que você julgar apropriado;
- a API deve seguir os conceitos REST;
- o Content-Type das respostas da API deve ser application/json ;
- o código da solução deve conter testes e algum mecanismo documentado para - gerar a informação de cobertura dos testes;
- a aplicação deve gravar logs estruturados em arquivo texto;
- Para executar os testes de unidade, devemos utilizar os comandos [Os comandos abaixo executa os testes de unidade e gera o arquivo com a cobertura]
ou
make test
go test -v --coverprofile tests/coverage.out ./... go tool cover -html=tests/coverage.out
- Para executar o projeto local com docker, devemos utilizar os comandos [Os comandos abaixo gera um container de banco de dados, faz criação das tabelas e executa a API]
ou
make start
docker-compose -f deployment/docker-compose.yml up -d --build
- Para parar a execução do projeto
ou
make stop
docker-compose -f deployment/docker-compose.yml down
- Precisamos de uma conta do Microsoft Azure
- Para gerar a infra como código, precisamos instalar a CLI do Azure
- Gerando o recurso AKS e MSSQL no Microsoft Azure com Terraform
- Na pasta deployment/iac, devemos executar os seguintes comandos
terraform init -- inicia a infra como código terraform validate -- valida os arquivos .tf terraform plan -- mostra o planejamento do que será criado terraform apply -- aplica nossa infra. para remover é só alterar o apply para destroy
- Exemplo dos logs estruturados [Caminho do arquivo (exemplo) cmd/api/logs.txt]
- Link da Collection
- Ambiente Local http://localhost:8080
- Ambiente Simulando Produção http://20.246.221.128
https://www.getpostman.com/collections/0acb7b5c4b1e38b8e2d3
- Pode ser utilizado os testes no caminho tests/planets.http