- Guia para rodar o projeto
- Packages e rotas
Esta seção dedica-se a explicar o passo-a-passo necessário para rodar esta aplicação
- Clone o repositório para uma pasta de trabalho
- No diretório alpha_store/alpha_store procure por config.ini e insira as credenciais de um banco de dados local
- Faça as migrações rodando ``alembic upgrade head``
- 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
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.
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.
Após realizar os passos acima, é hora de rodar a aplicação. Podemos fazer isso de três maneiras:
Para rodar aplicação em modo debug basta executar no terminal py __ini__.py
(você precisa estar dentro de alpha_store/alpha_store)
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.
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 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