Initial commit: mini-erp (backend FastAPI + frontend React/Vite)
Base para el flujo de ramas por cliente. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
commit
ab3c613165
154 files changed
+16872
No files matched your search
@@ -0,0 +1,44 @@
|
||||
import os
|
||||
import logging
|
||||
from contextlib import contextmanager
|
||||
from typing import Iterator
|
||||
|
||||
from dotenv import load_dotenv
|
||||
from fastapi import HTTPException
|
||||
from hdbcli import dbapi
|
||||
|
||||
# ============================================================================
|
||||
load_dotenv(dotenv_path=".env")
|
||||
|
||||
HANA_HOST = os.getenv("HANA_HOST", "")
|
||||
HANA_PORT = int(os.getenv("HANA_PORT", 30015))
|
||||
HANA_USER = os.getenv("HANA_USER", "")
|
||||
HANA_PASSWORD = os.getenv("HANA_PASSWORD", "")
|
||||
HANA_SCHEMA = os.getenv("HANA_SCHEMA", "")
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# ============================================================================
|
||||
@contextmanager
|
||||
def hana_connection() -> Iterator[dbapi.Connection]:
|
||||
"""
|
||||
Abre una conexión a SAP HANA para un query puntual (reportes Jinja/HTML)
|
||||
y la cierra al salir del bloque `with`.
|
||||
"""
|
||||
try:
|
||||
conn = dbapi.connect(
|
||||
address=HANA_HOST,
|
||||
port=HANA_PORT,
|
||||
user=HANA_USER,
|
||||
password=HANA_PASSWORD,
|
||||
currentSchema=HANA_SCHEMA,
|
||||
)
|
||||
except Exception as exc:
|
||||
logger.error(f"Error al conectar con HANA: {exc}")
|
||||
raise HTTPException(status_code=500, detail=f"No se pudo conectar con la base de datos: {exc}")
|
||||
|
||||
try:
|
||||
yield conn
|
||||
finally:
|
||||
conn.close()
|
||||
# ============================================================================
|
||||
Reference in new issue
Block a user