Este projeto implementa um sistema de cadastro de filmes e avaliações de usuários, permitindo que os filmes sejam avaliados com uma nota de 1 a 10 e acompanhados de um comentário. O sistema foi desenvolvido com FastAPI para a API e SQLAlchemy para a interação com o banco de dados relacional MySQL.
- FastAPI: Framework Python para criação da API.
- SQLAlchemy: ORM para integração com banco de dados relacional.
- MySQL: Banco de dados utilizado.
- Pydantic: Validação e serialização de dados.
- Uvicorn: Servidor ASGI para rodar a aplicação.
No arquivo requirements.txt estão todas as ferramentas utilizadas, bem como as versões.
-
- tb_filmes ➡️ Contém informações a respeito dos filmes, como título (nome), ano de lançamento, gênero (ação, aventura, etc) e diretor;
- tb_avaliacoes ➡️ Informações sobre avaliações de cada filme, como nome do avaliador, nota (de 0 a 10), comentário e código ID do filme.
-
- A tabela tb_avaliacoes está relacionada à tabela tb_filmes por intermédio da chave estrangeira "filme_id", através de uma relação muitos para um, ou seja, um filme pode ter diversas avaliações conectadas a ele.
-
- Optei pela construção/modelagem das tabelas utilizando o SQLAlchemy (pastas config e models deste projeto), abaixo estão recortes dos scripts com os parâmetros e regras utilizadas.
-
-
- GET/ ➡️ Exibe todos os filmes presentes no banco de dados;
- GET/{id} ➡️ Retorna o filme com base no id fornecido;
- POST/ ➡️ Cria um novo filme manualmente em tb_filmes;
- POST/reqapi/{nome_filme} ➡️ Recebe nome do filme e faz requisição para a API de filmes OMDb, os dados são tratados e registrados automáticamente na tabela;
- PATCH/{id} ➡️ Altera algum campo do filme com o id informado;
- DELETE/{id} ➡️ Deleta registro com base no id informado.
-
- GET/ ➡️ Retorna todas as avaliações cadastradas em tb_avaliacoes;
- POST/ ➡️ Cadastra nova avaliação informando o id do filme a ser avaliado;
- DELETE/ ➡️ Deleta registro com base no id informado.
-
-
-
- 1ª Parte ➡️ Criação de duas funções no arquivo "request_api.py", a "requestFilmeAPI", responsável por receber uma string com nome do filme, realizar a requisição no https://www.omdbapi.com/ e converter o JSON em dicionário python, e a segunda função é "criaDictFilmeAPI", que recebe esse JSON e modifica sua esturura, adequando-o ao Schema do banco de dados;
- 2ª Parte ➡️ Importação da função "requestFilmeAPI" diretamente na rota POST que irá realizar o cadastro no filme com base no nome informado pelo usuário. Como mostra o recorte abaixo:
-
Conforme for aprimorando e integrando mais funcionalidades ao código, seria interessante criar uma camada de serviço, onde serão realizadas todas as operações lógicas, assim, modularizando o projeto e deixando a camada de rotas apenas com a função de controlar o fluxo.






