Skip to content

jairperrut/movie-awards-api

Repository files navigation

Documentação da API Movie Awards

Visão Geral

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.

Tecnologias Utilizadas

  • 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.

Decisões de Design

Clean Architecture

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.

Banco de Dados

Utilização do SQLite como banco local. As tabelas são criadas automaticamente no startup da aplicação.

Carregamento Inicial

Um arquivo CSV é processado na inicialização para popular o banco com dados dos vencedores e indicados.

Execução

Para executar a aplicação utilizando Docker Compose:

  1. Certifique-se de ter o Docker e o Docker Compose instalados.
  2. O arquivo .env contem as variáveis necessárias. Edite caso necessário (exemplo de variável: DB_ECHO=True).
  3. Execute o comando:
docker-compose up --build api

A aplicação estará disponível em http://localhost:8000.

Alterando a Porta

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.

Endpoints Principais

1. GET /awards/interval

Retorna os intervalos máximo e mínimo entre vitórias de produtores.

Exemplo de Resposta:

{
  "min": [
    {"producer": "Producer A", "interval": 2, "previousWin": 2015, "followingWin": 2017}
  ],
  "max": [
    {"producer": "Producer B", "interval": 13, "previousWin": 2002, "followingWin": 2015}
  ]
}

Testes

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

Considerações Finais

Essa aplicação foi projetada para ser extensível e de fácil manutenção.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages