Skip to content

maetsuji/pyRecipeApi

Repository files navigation

pyRecipeAPI

Este é um projeto de API para gerenciar receitas e ingredientes, desenvolvido com FastAPI e SQLAlchemy.

Sobre o Projeto

🇧🇷 - Este é um projeto de API Web em Python que gerencia Receitas e Ingredientes. Ele foi feito inicialmente em .NET e reescrito em Python como parte de um pré-projeto para o curso de DevOps da LACUNA Software e como um desafio pessoal para aprender mais sobre FastAPI, SQLAlchemy e requisições HTTP. Abaixo, você encontrará instruções sobre como configurar, executar e testar a API.

🇺🇸 - This is a Python Web API project that manages Recipes and Ingredients. It was initially built in .NET and rewritten in Python as part of a pre-project for the LACUNA Software DevOps course, and as a personal challenge to further explore FastAPI, SQLAlchemy, and HTTP requests. Below you will find instructions on how to set up, run, and test the API.

Pré-requisitos

Certifique-se de ter os seguintes itens instalados no seu sistema:

  • python 3.10 ou superior

  • pip (gerenciador de pacotes do Python): Ferramenta utilizada para instalar e gerenciar pacotes Python. Ele permite que você instale bibliotecas e dependências necessárias para o projeto diretamente do repositório PyPI.

  • pip-tools: Conjunto de ferramentas que ajudam a gerenciar dependências Python de forma mais eficiente. Ele inclui o pip-compile, que gera um arquivo requirements.txt a partir de um arquivo requirements.in, e o pip-sync, que sincroniza o ambiente com as dependências especificadas.

  • docker: Plataforma que permite criar, implantar e executar aplicativos em contêineres. Ele garante que o ambiente de execução seja consistente, independentemente do sistema operacional ou configuração da máquina.

  • docker-compose: Ferramenta que facilita a definição e execução de aplicativos multi-contêiner. Com ele, é possível usar um arquivo docker-compose.yaml para configurar os serviços e gerenciá-los com comandos simples.


Executando o projeto usando Docker:

Utilize o shell script providenciado com o projeto:

Esse script checa e instala as dependencias necessarias para o projeto, compila a lista de dependencias em requirements.in e roda o comando docker compose

  1. Clone o repositório:
git clone https://github.com/maetsuji/pyRecipeApi.git
cd pyRecipe_API
  1. Rode o script a partir da raiz do projeto:
sudo sh pyrecipeapi.sh

Se utilizou esse script, parabéns! Os contêineres já estão no ar.

  1. Acesse a documentação interativa: Abra o navegador e acesse: http://127.0.0.1:8000/docs (Swagger UI)

  2. Para interromper a execução:

docker stop pyrecipeapi-running

ou simplesmente [Ctrl + C] no terminal em que o projeto está sendo executado.


Configuração do Arquivo .env

Certifique-se de configurar o arquivo .env com as suas variáveis de ambiente corretas. Exemplo:

DATABASE_URL=postgresql+psycopg2://root:root@db:5432/recipes

Migração de Dados do SQLite para PostgreSQL

No projeto, visando conteinerizar o banco de dados de forma separada da aplicação, precisei migrar de SQLite para PostgreSQL. Se você possui um banco de dados SQLite (recipes.db) com dados existentes, pode migrá-los para o PostgreSQL utilizando o serviço migrate:

  1. Certifique-se de que o arquivo recipes.db está no diretório raiz do projeto.
  2. Execute o comando de migração:
docker-compose run migrate
  1. Verifique se os dados foram migrados corretamente acessando o banco de dados PostgreSQL:
docker exec -it <db_container_id> psql -U root -d recipes

Estrutura do Projeto

pyRecipe_API/
├── .env                  # Configurações de ambiente
├── requirements.txt      # Dependências do projeto
├── Dockerfile            # Especificações de como a aplicação será conteinerizada
├── docker-compose.yaml   # Configuração do Docker Compose
├── migrate_data.py       # Script de migração de dados
├── pyrecipeapi.sh        # Shell Script de configuração automática da API
└── app/
   ├── __init__.py       # Arquivo de inicialização do pacote
   ├── crud.py           # Operações CRUD para o banco de dados
   ├── database.py       # Configuração do banco de dados
   ├── main.py           # Ponto de entrada da aplicação
   ├── models.py         # Definições dos modelos do banco de dados
   ├── schemas.py        # Esquemas de validação e serialização
   └── __pycache__/      # Arquivos cacheados pelo Python

Licença

Este projeto está licenciado sob a MIT License.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published