Desafio Ideal
Esse repositório foi criado para a reprodução do desafio descrito nesse repositório
Optou-se por desenvolver a solução utilizando a linguagem Python, junto com a biblioteca flask-restful
Instruções de execução
A aplicação está estruturada em dois containers Docker:
- Banco de dados PostgreSQL 14
- Aplicação Python/Flask
Essa decisão foi tomada considerando que em um ambiente de produção as duas aplicações costumam serem executadas em locais diferentes.
Para executar os containers basta executar o comando
docker-compose up -d
O banco de dados estará disponivel na porta 5432 e o a API na porta 5050.
Durante o processo de build do container todas as tabelas do banco de dados serão criadas através do uso do ORM SqlAlchemy e sua integração com o Flask.
Dado a baixa complexidade das tabelas e das relações entre elas não foram desenvolvidos scripts SQL para a criação manual das tabelas.
Documentação
Para a documentação das rotas, optou-se por utilizar o padrão swagger. Para consultar a documentação basta acessar o endereço http://localhost:5050/apidocs
com os containers ativos
Pontos de melhoria
- Inclusão de testes: devido ao tempo de desenvolvimento do desafio, os testes não foram desenvolvidos.
- Criação de rotas para alteração nos produtos cadastrados, diversos verbos disponiveis no protocolo http podem ser utilizados para a implementação dessas funcionalides.
- Criar rotas com views para consultar dados de ordens feitas por um usuário, ordens feitas por produto e etc.
- Utilizar mais um container com apache or nginx para hospedar a aplicação rest