A aplicação Movie Awards é uma API desenvolvida para processar e exibir informações relacionadas à categoria de "Pior Filme" do Golden Raspberry Awards. Ela segue os princípios de Domain-Driven Design (DDD) e Clean Architecture, promovendo manutenção e escalabilidade.
- FastAPI: Framework para desenvolvimento de APIs.
- SQLModel: ORM baseado em SQLAlchemy e Pydantic.
- SQLite: Banco de dados utilizado para armazenamento local.
- Docker: Containerização para execução da aplicação.
- Makefile: Automatização de comandos recorrentes.
- Docker Compose: Orquestração dos containers.
A aplicação está estruturada para separar as camadas de:
- Aplicação: Contém os casos de uso (interações principais).
- Domínio: Define as regras de negócio e entidades.
- Infraestrutura: Implementações específicas, como integrações com banco de dados.
Essa abordagem garante:
- Baixo acoplamento entre módulos.
- Facilidade de troca de tecnologias (ex.: mudança de banco de dados).
- Testabilidade, pois as regras de negócio não dependem de implementações externas.
Utilização do SQLite como banco local. As tabelas são criadas automaticamente no startup da aplicação.
Um arquivo CSV é processado na inicialização para popular o banco com dados dos vencedores e indicados.
Para executar a aplicação utilizando Docker Compose:
- Certifique-se de ter o Docker e o Docker Compose instalados.
- O arquivo
.env
contem as variáveis necessárias. Edite caso necessário (exemplo de variável:DB_ECHO=True
). - Execute o comando:
docker-compose up --build api
A aplicação estará disponível em http://localhost:8000.
Caso a porta 8000
esteja em uso, edite o arquivo docker-compose.yml
e modifique o mapeamento da porta:
ports:
- "<nova_porta>:8000"
Substitua <nova_porta>
pelo número desejado e execute novamente o comando docker-compose up --buid api
.
Retorna os intervalos máximo e mínimo entre vitórias de produtores.
{
"min": [
{"producer": "Producer A", "interval": 2, "previousWin": 2015, "followingWin": 2017}
],
"max": [
{"producer": "Producer B", "interval": 13, "previousWin": 2002, "followingWin": 2015}
]
}
A aplicação inclui testes de integração para validar o comportamento dos casos de uso. Para executar os testes:
docker-compose up --build tests
Essa aplicação foi projetada para ser extensível e de fácil manutenção.