https://github.com/bulletdev/sql-query-builder
sejamos sinceros, ninguém merece fazer vários inner joins para conseguir fazer uma busca no banco, né? 😅
https://github.com/bulletdev/sql-query-builder
innerjoin innerjoin-crossjoin-fullouterjoin-with-same-data mysql oracle-db postgresql sql
Last synced: 9 months ago
JSON representation
sejamos sinceros, ninguém merece fazer vários inner joins para conseguir fazer uma busca no banco, né? 😅
- Host: GitHub
- URL: https://github.com/bulletdev/sql-query-builder
- Owner: Bulletdev
- License: other
- Created: 2025-01-31T04:43:37.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-01-31T09:43:15.000Z (11 months ago)
- Last Synced: 2025-04-06T05:58:25.971Z (9 months ago)
- Topics: innerjoin, innerjoin-crossjoin-fullouterjoin-with-same-data, mysql, oracle-db, postgresql, sql
- Language: Python
- Homepage:
- Size: 17.6 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SQL Query Builder - Automatizador de Queries Multi-Database
[](https://golang.org/doc/go1.20)
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
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](#características)
- [Requisitos](#requisitos)
- [Instalação](#instalação)
- [Configuração](#configuração)
- [Uso](#uso)
- [Exemplos](#exemplos)
- [Contribuição](#contribuição)
- [Licença](#licença)
## ✨ 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:
```bash
git clone https://github.com/bulletdev/sql-query-builder.git
cd sql-query-builder
```
2. Configure o ambiente virtual Python e instale as dependências:
```bash
cd backend
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```
>> No Windows:
```bash
cd backend
python -m venv venv
source venv\Scripts\activate
pip install -r requirements.txt
```
3. Configure o ambiente Go:
```bash
cd ../frontend
go mod tidy
```
## ⚙️ Configuração
1. Copie o arquivo de configuração de exemplo:
```bash
cp backend/config.yml.example backend/config.yml
```
2. Edite `config.yml` com suas configurações de banco de dados:
```yaml
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:
```bash
cd backend
python src/app.py
```
2. Em outro terminal, execute o frontend:
```bash
cd frontend
go run cmd/main.go
```
## 📝 Exemplos
### Consulta básica com JOIN (Go)
```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)
```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](LICENSE) para detalhes.