Files
rips_manager/app/routes/debug_fb.py
T

68 lines
2.3 KiB
Python

from fastapi import APIRouter, Request, Depends
from fastapi.responses import JSONResponse
from app.database import get_connection
from app.auth import get_current_user
from app.services.firebird_service import get_firebird_from_config
router = APIRouter(prefix="/debug-fb", tags=["debug"])
def _cfg():
conn = get_connection()
c = {r["key"]: r["value"] for r in conn.execute("SELECT * FROM config").fetchall()}
conn.close()
return c
@router.get("/cups")
async def find_cups(request: Request, user: dict = Depends(get_current_user)):
cfg = _cfg()
fb, ok, msg = get_firebird_from_config(cfg)
if not ok:
return JSONResponse({"error": msg})
results = {}
# 1. Tablas/campos que contengan "CUP" en el nombre
ok1, _, rows1 = fb.execute_query("""
SELECT DISTINCT TRIM(f.RDB$RELATION_NAME) AS tabla, TRIM(f.RDB$FIELD_NAME) AS campo
FROM RDB$RELATION_FIELDS f
WHERE f.RDB$FIELD_NAME CONTAINING 'CUP'
ORDER BY 1, 2
""")
results["campos_cup"] = rows1 if ok1 else []
# 2. Columnas de la tabla ARTICULO
ok2, _, rows2 = fb.execute_query("""
SELECT TRIM(f.RDB$FIELD_NAME) AS campo
FROM RDB$RELATION_FIELDS f
WHERE f.RDB$RELATION_NAME = 'ARTICULO'
ORDER BY f.RDB$FIELD_POSITION
""")
results["columnas_articulo"] = [r["campo"] for r in rows2] if ok2 else "no existe"
# 3. Columnas de la tabla EXAMEN (si existe)
ok3, _, rows3 = fb.execute_query("""
SELECT TRIM(f.RDB$FIELD_NAME) AS campo
FROM RDB$RELATION_FIELDS f
WHERE f.RDB$RELATION_NAME = 'EXAMEN'
ORDER BY f.RDB$FIELD_POSITION
""")
results["columnas_examen"] = [r["campo"] for r in rows3] if ok3 else "no existe"
# 4. Muestra de ARTICULO con el primer examen de RELACION
ok4, _, rows4 = fb.execute_query("""
SELECT FIRST 1 rel.COD_EXAMEN FROM RELACION rel WHERE rel.COD_EXAMEN IS NOT NULL
""")
if ok4 and rows4:
cod = rows4[0]["COD_EXAMEN"]
ok5, _, rows5 = fb.execute_query(
"SELECT FIRST 1 a.* FROM ARTICULO a WHERE a.CODIGO = :cod",
{"cod": cod}
)
results["muestra_articulo"] = rows5[0] if (ok5 and rows5) else "sin datos"
results["cod_examen_muestra"] = cod
fb.disconnect()
return JSONResponse(results)