Skip to content

Latest commit

 

History

History
89 lines (67 loc) · 4.86 KB

README.md

File metadata and controls

89 lines (67 loc) · 4.86 KB

Alpha Store

Tabela de Conteúdos

  • Guia para rodar o projeto
  • Packages e rotas


Guia Para Rodar o projeto

Esta seção dedica-se a explicar o passo-a-passo necessário para rodar esta aplicação

Passos Resumidos:

  1. Clone o repositório para uma pasta de trabalho
  2. No diretório alpha_store/alpha_store procure por config.ini e insira as credenciais de um banco de dados local
  3. Faça as migrações rodando ``alembic upgrade head``
  4. Rode a aplicação utilizando __ini__.py, flask run ou waitress-serve

Além disso, foi criado também este notebook que pode ser utilizado para testar as rotas.
Para loadar os dados de products.json no banco de dado, também desenvolvi ``extra.py```. Basta executar:

python3 extra.py

Passo 1: Requisitos Iniciais

Para rodar este projeto, é necessário utilizar o gerenciador de pacotes ``poetry``. Antes de começar, clonde o repositório do projeto em uma pasta de trabalho.
Para isto, basta digitar ``git clone`` https://github.com/JEdmario16/alpha-store`` no terminal, o que criará o diretório ``alpha_store`` contendo os arquivos deste projeto.

Passo 2: Setup

Caso seu gerenciador de pacotes seja o poetry, você pode criar e ativar um ambiente virtual digitando poetry shell e instalar todas as dependências do projeto utilizando poetry install. No arquivo pyproject.toml é possível vizualizar todas as dependências que serão instaladas.

Antes de rodar o projeto, precisamos setar algumas configurações iniciais. Ao clonar o repositório, você terá o arquivo alpha_store/config.ini, onde deve ser setado toda a configuração do banco de dados. A seção DATABASE deverá armazenar as informações sobre o banco de dados principal. Já a seção de MOCK_DATABASE armazena as credenciais para se concectar ao banco de dados a ser utilizados nos testes.

Caso haja alguma configuração faltante/incorretado db, o sistema de log da aplicação e o traceback do SQLAlchemy irão ser úteis para verificar o que ocorreu.

Nesta aplicação, foi utilizado o alembic para realizar as migrações. Antes de rodar a aplicação pela primeira vez, é necessário digitar no console: alembic upgrade head para criar e persistir os schemas no banco de dados setado em config.ini

Nota: No repositório, também foi passado o histórico de versões do alembic. Isto significa que apenas o comando alembic upgrade head é necessário para fazer as migrações. No entanto, caso problemas ocorram, talvez seja necessário apagar as versões em migrations/versions/) e rodar ``alembic revision --autogenerate -m "first migration" Além disso, em migrations/env é possível passar uma db_uri completa para rodar na aplicação.

Nota: Caso apenas o database principal seja passado, não será possível rodar os testes. Além disso, caso o database de testes seja o mesmo que o principal, a aplicação irá desfazer toda a migração a cada vez que algum teste for executado.

Passo 3: Rodando a aplicação

Após realizar os passos acima, é hora de rodar a aplicação. Podemos fazer isso de três maneiras:

Modo 1: Rodando em modo de debugging

Para rodar aplicação em modo debug basta executar no terminal py __ini__.py (você precisa estar dentro de alpha_store/alpha_store)

Modo 2: Rodando a aplicação sem um wsgi

Caso tenha problemas com o waitress, você pode também rodar a app utilizando apenas o flask. Para isso, basta executar flask run no terminal.

Modo 3: Utilizando o waitress

Caso queira utilizar o waitress para rodar a aplicação, basta ir para alpha_store/ e executar a seguinte linha de comando no terminal: waitress-serve --listen:127.0.0.1:5000 wsgi:app

Rotas da api:

Rotas de Auth package:
Registro de usuários: /apis/v1/user/register
Login de usuários : /apis/v1/user/login
Oter carrinho: /apis/v1/user/cart
Adicionar produtos no carrinho: /apis/v1/user/cart/add-to-cart/<int product_id>
Remover produtos do carrinho: /apis/v1/user/cart/remove-from-cart/<int product_id>
checkout: /apis/v1/user/cart/checkout
listar pedidos: /apis/v1/user/orders
Logout: /apis/v1/user/logout

Rotas de Catalog Package
Obter itens(com filtros): /apis/v1/catalog/get_products

Estas rotas estão na aplicação mas não são requisitos(bonus)

Obter produtos por id: /apis/v1/catalog/get_products_by_id/<id product_id>
Obter produtos por nome: /apis/v1/catalog/get_products_by_name/<str product_name>
Gera report de vendas: apis/v1/analytics/report