/desafio-bbts

Repository for API of User Image System

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

User Image System

The User Image System - UIS is a simple CRUD that recieves clients names and images from the endpoint API and store it into a datababase.

Iniciando a Aplcação

  • Para iniciar a aplicação, basta clonar no projeto e, na raiz, executar o seguinte comando:
    docker compose up
    

Testes

  • O framework de testes utilizado foi o pytest.
  • Certifique-se de ter o pytest instalado e na pasta app executar:
    python -m pytest
    
    • Em distribuições Ubuntu pode ser necessário executar:
      python3 -m pytest
      
  • Veja um exemplo da saída abaixo: pytest_exemple

Arquitetura

  • Como se trata de um crud simples, não foi adotada uma arquiterura com banco de dados separado e nem um proxy para receber as conexões. Deste modo, temos apenas um container Docker com a FastAPI e o Guvicorn servindo os clientes na porta padrão http:8000.

Diagramas

Application Diagram:

Application Diagram

E-R Diagram:

Modelo ER - UIS

Estrutura do projeto

├── app -> Pasta Raiz da aplicação. É o conteúdo que é copiado para o container docker
│   
│   ├── api -> Arquivos 
│   │   
│   │   ├── v1
│   │   │   └── enpoints
│   │   │       ├── root.py
│   │   │       ├── user.py
│   │   │       ├── user_image.py
│   │   │       └── user_image_thumb.py
│   │   └── api.py
│   ├── core
│   │   ├── configs.py
│   │   ├── database.py
│   │   ├── deps.py
│   │   └── util.py
│   ├── db -> Pasta que guarda o bando de dados sqlite (é criado no momento do deploy da aplicação)
│   │   └── uis.sqlite
│   ├── models
│   │   ├── all_models.py
│   │   ├── images_model.py
│   │   └── users_model.py
│   ├── resources
│   │   ├── img
│   │   │   ├── exemplo-jpg.jpg
│   │   │   └── img_teste.jpg
│   │   └── txt
│   │       └── base64_img_teste.txt
│   ├── schemas
│   │   ├── images_schema.py
│   │   └── users_schema.py
│   ├── test -> Guarda o código para aexecução do framework pytest
│   │   └── test_api.py
│   ├── Dockerfile -> instruções de build do aplicação fastAPI.
│   ├── criar_tabelas.py -> Arquivo que pode ser executado separadamente para criar o bando da aplicação e suas respectivas tabelas.
│   ├── main.py -> Arquivo principal da aplicação.
│   └── requirements.txt
├── diagrams -> Diretório com os diagramas e modelos da aplicação.
│   ├── Application Diagram.png
│   ├── Modelo ER - UIS.pdf
│   └── Modelo ER - UIS.png
├── Docker-compose.yml