feat: factory de conexao MySQL

This commit is contained in:
Gustavo
2026-08-13 09:45:26 -03:00
parent 669e864141
commit 880329bb8e
3 changed files with 39 additions and 0 deletions
View File
+22
View File
@@ -0,0 +1,22 @@
"""
Única porta de entrada para conexão MySQL do painel. Todo módulo em
app/db/*.py chama get_connection() daqui — nunca abre pymysql.connect()
por conta própria.
"""
import os
import pymysql
import pymysql.cursors
def get_connection() -> pymysql.connections.Connection:
"""Abre uma conexão nova por requisição (escala MVP; sem pool)."""
return pymysql.connect(
host=os.environ["DB_HOST"],
port=int(os.environ.get("DB_PORT", "3306")),
user=os.environ["DB_USER"],
password=os.environ["DB_PASSWORD"],
database=os.environ["DB_NAME"],
cursorclass=pymysql.cursors.DictCursor,
autocommit=True,
)
+17
View File
@@ -0,0 +1,17 @@
"""
Requer o container de dev rodando (licenciamento-mysql-dev, porta 3307 —
ver licenciamento-n8n/docs/configurar-banco-sistema.md). tests/conftest.py
já configura as env vars de conexão com os mesmos defaults do .env.example.
"""
from app.db.connection import get_connection
def test_conexao_abre_e_consulta():
conn = get_connection()
try:
with conn.cursor() as cur:
cur.execute("SELECT 1 AS um")
row = cur.fetchone()
assert row == {"um": 1}
finally:
conn.close()