Skip to content

sejamos sinceros, ninguém merece fazer vários inner joins para conseguir fazer uma busca no banco, né? 😅

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE
MIT
LICENSE.md
Notifications You must be signed in to change notification settings

Bulletdev/sql-query-builder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SQL Query Builder - Automatizador de Queries Multi-Database

Go Version Python Version License

Um sistema robusto para automatizar a construção e execução de queries SQL em diferentes bancos de dados, com suporte especial para sistemas legados. O projeto utiliza Python (Flask/SQLAlchemy) no backend e Go no frontend.

📋 Índice

✨ Características

Backend (Python)

  • Suporte multi-database (MySQL, PostgreSQL, Oracle, SQL Server)
  • Construção dinâmica de queries com múltiplos JOINs
  • Pool de conexões para melhor performance
  • Tratamento robusto de erros
  • Logging configurável
  • Validação de dados via dataclasses
  • Suporte a queries complexas (WHERE, GROUP BY, ORDER BY, LIMIT)

Frontend (Go)

  • Interface tipo-segura para configuração de queries
  • Timeout configurável para requisições
  • Tratamento elegante de erros
  • Formatação automática dos resultados

📦 Requisitos

Backend

  • Python 3.8+
  • Flask
  • SQLAlchemy
  • Drivers de banco de dados específicos:
    • MySQL: pymysql
    • PostgreSQL: psycopg2-binary
    • Oracle: cx-oracle
    • SQL Server: pyodbc

Frontend

  • Go 1.20+
  • Sem dependências externas além da biblioteca padrão

🚀 Instalação

  1. Clone o repositório:
git clone https://github.com/bulletdev/sql-query-builder.git
cd sql-query-builder
  1. Configure o ambiente virtual Python e instale as dependências:
cd backend
python -m venv venv
source venv/bin/activate  
pip install -r requirements.txt

No Windows:

cd backend
python -m venv venv
source venv\Scripts\activate  
pip install -r requirements.txt
  1. Configure o ambiente Go:
cd ../frontend
go mod tidy

⚙️ Configuração

  1. Copie o arquivo de configuração de exemplo:
cp backend/config.yml.example backend/config.yml
  1. Edite config.yml com suas configurações de banco de dados:
databases:
  mysql:
    host: localhost
    port: 3306
    pool_size: 5
    timeout: 30
  oracle:
    host: localhost
    port: 1521
    pool_size: 5
    timeout: 30

💻 Uso

  1. Inicie o backend:
cd backend
python src/app.py
  1. Em outro terminal, execute o frontend:
cd frontend
go run cmd/main.go

📝 Exemplos

Consulta básica com JOIN (Go)

config := QueryConfig{
    DbType:    "mysql",
    MainTable: "TGFCAB",
    Columns: []string{"TGFCAB.NUNOTA", "TGFPAR.NOMEPARC"},
    Joins: []JoinCondition{
        {
            Table:       "TGFPAR",
            LeftColumn:  "CODPARC",
            RightColumn: "CODPARC",
            JoinType:    "left",
        },
    },
}

Consulta com condições e ordenação (Python)

query_config = QueryConfig(
    db_type="oracle",
    main_table="TGFCAB",
    columns=["NUNOTA", "DTNEG"],
    conditions=[{"expression": "DTNEG >= '2024-01-01'"}],
    order_by=["DTNEG DESC"],
    limit=100
)

🤝 Contribuição

  1. Faça um Fork do projeto
  2. Crie sua Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
  4. Push para a Branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

📄 Licença

Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.

About

sejamos sinceros, ninguém merece fazer vários inner joins para conseguir fazer uma busca no banco, né? 😅

Topics

Resources

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE
MIT
LICENSE.md

Stars

Watchers

Forks

Packages

No packages published