Skip to content

Este projeto é uma API desenvolvida para ser altamente dinâmica e modular, capaz de se adaptar a diferentes configurações e bancos de dados sem a necessidade de alterar o código-fonte.

Notifications You must be signed in to change notification settings

GustavoHBraga/DynamicAPI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

💻📍 DynamicAPI

Este projeto é uma API desenvolvida para ser altamente dinâmica e modular, capaz de se adaptar a diferentes configurações e bancos de dados sem a necessidade de alterar o código-fonte.

📃 Características:

    Dinamismo: Configurações totalmente controláveis via arquivos JSON.
    Modularidade: Fácil integração com diferentes bancos de dados como MariaDB, MySQL e Oracle.
    Escalabilidade: Desenvolvida para suportar crescimento e demandas crescentes com facilidade.

📃 Arquitetura

    A arquitetura do projeto foi construída seguindo alguns padrões de design para garantir sua modularidade e extensibilidade.

🎨 Padrões de Design:


    Singleton: Utilizado na gestão de conexões com a base de dados para garantir uma única instância da conexão por base de dados.
    Command: O projeto usa uma forma do padrão Command para encapsular uma solicitação como um objeto, permitindo assim a parametrização dos clientes com diferentes solicitações.
    Adapter: Este padrão é aplicado na forma de adaptadores específicos para cada tipo de banco de dados, permitindo que eles possam ser utilizados de maneira intercambiável.
    Strategy: Permite que o algoritmo de serialização JSON seja escolhido em tempo de execução, dependendo do tipo de dados que está sendo processado.


📋 Configuração e Execução:

Pré-requisitos:

Antes de iniciar, certifique-se de ter instalado:

  • Python 3.8 ou superior
  • Gerenciador de pacotes pip
  • Banco(s) de dados de sua escolha

# Clonar o repositório
git clone https://github.com/GustavoHBraga/DynamicAPI.git

# Entrar no diretório do projeto
cd DynamicAPI

# Instalar as dependências
pip install -r requirements.txt
  • Criar arquivo .env:
############# MYSQL CONNECTIONS ##########
MYSQL_HOST = "localhost"
MYSQL_PORT = 3306
MYSQL_USER = "root"
MYSQL_PASSWORD = "root"

############# MARIADB CONNECTIONS ##########
MARIADB_HOST = "localhost"
MARIADB_PORT = 3305
MARIADB_USER = "root"
MARIADB_PASSWORD = "root"

############ ORACLE CONNECTIONS ############
ORACLE_INSTANCE = ".\Databases\instantclient_19_20"
ORACLE_HOST_AND_SERVICE = "localhost/localhost"
ORACLE_USER = "root"
ORACLE_PASSWORD = "root"
  • Exemplo de configuração do arquivo json (config-routes.json):
{
    "Configurations":{

        "Api_configurations": [
            {
                "Instance": "Mysql",
                "Database": "money_api",
                "Description": "List all categories in the product",
                "QueryFile": "./query_files/Mysql/category.sql",
                "Route": "/v1/categories"
            },
            {
                "Instance": "Mysql",
                "Database": "bdvendas",
                "Description": "List all categories in the product",
                "QueryFile": "./query_files/Mysql/fornecedores.sql",
                "Route": "/v1/fornecedores"
            },
            {
                "Instance": "Mariadb",
                "Database": "DP_WORKSHOP",
                "Description": "List all categories in the product",
                "QueryFile": "./query_files/MariaDB/product.sql",
                "Route": "/v1/product"
            },
            {
                "Instance": "Mariadb",
                "Database": "DP_WORKSHOP",
                "Description": "List all categories in the product",
                "QueryFile": "./query_files/MariaDB/product-v2.sql",
                "Route": "/v2/product"
            }
        ]

    }
}
  • Exemplo de arquivo sql para realizar as consultas:
select pt.ProductName, pt.Price, pt.ProductDescription from product as pt
  • Estrutura para armazenar os arquivos de consultas (Query):

image

USO

  • Para iniciar a API, execute o seguinte comando:

python -m uvicorn app:app --reload

ou

python app.py

  • Navegue até http://localhost:8082/docs para ver a documentação interativa da API (gerada pelo Swagger UI). Segue abaixo um exemplo:

image

About

Este projeto é uma API desenvolvida para ser altamente dinâmica e modular, capaz de se adaptar a diferentes configurações e bancos de dados sem a necessidade de alterar o código-fonte.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages