API RESTful com FastAPI e SQLAlchemy que lê um CSV de filmes premiados ao iniciar e calcula os produtores indicados com maior e menor intervalo entre prêmios consecutivos.
- Python 3.8+
virtualenvou pythonvenv
make help- Lista todos os comandos disponíveismake install- Cria o ambiente virtual e instala as dependênciasmake test- Executa os testes com pytestmake run- Inicia a aplicação com Uvicorn
virtualenv venv # ou python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
pip install -r requirements.txt
ENV=prod PYTHONPATH=. uvicorn app.main:app --reload
ENV=test PYTHONPATH=. pytest tests
app/
data/
test/movielist.csv -> CSV de exemplo para testes de integração/unitários
movielist.csv -> CSV que será processado ao rodar aplicação (Substituia esse arquivo para testes manuais)
database.py -> Conexão com o banco de dados SQLite/SQLAlchemy
main.py -> Inicialização da aplicação FastAPI
models.py -> Modelos de dados (SQLAlchemy)
service.py -> CRUD para manipulação dos dados
utils.py -> Funções utilitárias de load do .csv na inicialização
tests/
test_awards.py
Acesse o Swagger em http://localhost:8000/docs para visualizar a documentação da API.
GET /awards/intervals: Retorna produtores indicados com maior e menor intervalo entre prêmios consecutivos.
{
"min": [
{
"producer": "Joel Silver",
"interval": 1,
"previousWin": 1990,
"followingWin": 1991
}
],
"max": [
{
"producer": "Matthew Vaughn",
"interval": 13,
"previousWin": 2002,
"followingWin": 2015
}
]
}