O projeto Back-end desenvolvido durante o Módulo 2, consiste no desenvolvimento de uma API em Python, usando Flask com SQLAlchemy
- Utilizar Python
- Utilizar Flask com SQLAlchemy.
- Utilizar banco de dados PostgreSQL para armazenar os dados.
- Utilizar conceito de Migrations.
- Utilizar GitHub para armazenamento do código
- Utilizar Trello para organização do projeto
- Utilizar conceitos de squads, Kanban e Scrum.
- Utilizar conhecimentos em SQL
Instalar Python na maquina através do link abaixo: Python 3
Intalar o Poetry através do comando abaixo no cmd do Windows: <curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python>
- Executar o comando: poetry config --local virtualenvs.in-project true
- Executar o comando: poetry install para instalar as dependencias
- Criar um arquivo .env baseado no arquivo .env_example e colocar os campos necessários.
Executar o comando: poetry run flask run
- poetry run flask db init
- poetry run flask db migrate
- poetry run flask db upgrade
- poetry run flask populate_db
INVENTORY
POST/inventory/create
Parametros de entrada:
- product_category_id (obrigatório)
- user_id (opcional)
- product_code (obrigatório)
- title (obrigatório)
- value (obrigatório)
- brand (obrigatório)
- template (obrigatório)
- description (obrigatório)
Saída:
- Sucesso, 201 (created)
- Error, 400
- Error premission, 403 (forbidden)
Regras de negócio:
- Permissão WRITE
- Todos os campos obrigatórios preenchidos
- O código do produto deve ser unico
- Value maior que zero
- Retornar status 201 quando o item for criado
GET/inventory Parametros de entrada:
- title (Opcional)
Saída:
- Sucesso, 200 (OK)
- Error, 204 (No content)
- Error premission, 403 (forbidden)
Regras de negócio:
- Permissão READ
- Retornar todos que tenham o mesmo titulo (usar like)
- O código do produto deve ser unico
- Se não tiver parametros retornar todos os itens
- Utilizar paginação, retornando 20 itens
- Se user_id = null retornar id: None e name: "Na empresa"
- Se nenhum resultado status 204 (No content)
- Se encontrado o resultado retornar em JSON contendo: id, product_code, title, product_category, user e Status 200 (OK)
GET/inventory/results
Sem parametros de entrada
Saída:
- Sucesso, 200 (OK)
- Error premission, 403 (forbidden)
Regras de negócio:
- Permissão READ
- Calcular numero de usuários
- Calcular o número de itens
- Calcular o valor da soma de todos os itens.
- Calcular quantos itens estão emprestados para usuários
- Retornar statísticas e status 200 (OK)
PATCH/inventory
Parametros de entrada:
- id (obrigatório)
- Quaisquer camplos (opcional)
Saída:
- Sucesso, 204 (No Content)
- Error, 400
- Error premission, 403 (forbidden)
Regras de negócio:
- Permissão UPDATE
- É possível alterar todos os campos exceto: product_category_id e product_code, senão status 400
- Respeitas as regras de negócio do endpoint POST
- Ao atualizar item, retornar status 204 (No Content)
USERS
POST/user
Parametros de entrada:
- city_id (obrigatório)
- gender_id (obrigatório)
- role_id (obrigatório)
- name (obrigatório)
- age (obrigatório)
- email (obrigatório)
- phone (obrigatório)
- password (obrigatório)
- cep (obrigatório)
- street (obrigatório)
- number_street (obrigatório)
- district (obrigatório)
- complement (opcional)
- landmark (opcional)
Saída:
- Sucesso, 201 (created)
- Error, 400
- Error premission, 403 (forbidden)
Regras de negócio:
- Permissão READ, WRITE, UPDATE e DELETE (role = Administrador do sistema)
- Todos os campos obrigatórios preenchidos
- O email deve ser unico no banco
- Password criptrografado no banco de dados (regra na models) e conter 8 digitos, sendo pelo menos um caracter especial
- Telefone deve conter 11 digitos sem letras ou caracter especial
- Retornar status 201 quando o item for criado
PATCH/user
Parametros de entrada:
- id (obrigatório)
Saída:
- Sucesso, 204 (No Content)
- Error id não encontrado, 404
- Error premission, 403 (forbidden)
Regras de negócio:
- Permissão UPDATE
- Campos preenchidos não podem ser alterados para campos vazios
- Se id não encontrado retornar erro
- Respeitar validações das models
- Retornar status 204 quando o usuário for alterado
POST/user/auth/google
Parametros de entrada:
- Login google
Saída:
- Sucesso, 200
Regras de negócio:
- Usuário deve estar desconectado
- Utilizar configuração OAuth2
- Se todas as informações estiverem corretas, retornar url do redirecionamento da aplicação e status 200
POST/user/logout
Saída:
- Delogado, 202
Regras de negócio:
- Limpa os dados da sessão: token e validações de login
GET/user/callback
Sem parametros de entrada
Saída:
- Redirecionamento
- Cadastro do usuário, caso não seja cadastrado
Regras de negócio:
- Verificar se o email recebido está cadastrado no banco de dados, senão cadastrar
- Redirecionar após validação dos valores enviados da url e do client do backend
POST/user/login
Parametros de entrada:
- email (obrigatório)
- password (obrigatório)
Saída:
- Sucesso, 200 (token)
- Error, 400
- Error, 401
Regras de negócio:
- Usuário deve estar desconectado
- Todos os campos obrigatórios preenchidos
- O email deve existir no banco
- Se Password estiver errado, retornar erro ao efetuar login
- Se todas as informações estiverem corretas, retornar token e status 200
GET/user
Parametros de entrada:
- Name (Opcional)
Saída:
- Sucesso, 200 (OK)
- Error, 204 (No content)
- Error premission, 403 (forbidden)
Regras de negócio:
- Permissão READ
- Retornar todos os usuários tenham o mesmo nome (usar like)
- Se não tiver parametros retornar todos os usuários de acordo com páginação
- Utilizar paginação, retornando 20 usuários por página
- Se nenhum resultado status 204 (No content)
- Se encontrado o resultado retornar em JSON contendo: id, nome, email, phone, role.name e Status 200 (OK)
Utilizamos oSwagger para a documentação dos endpoints para acessar http://localhost:5000/apidocs/
Somos os DEVinSanes, time de desenvolvedores full-stak, desenvolvemos o projeto DEVinventory.