Al-HUWAITI Shell
Al-huwaiti


Server : Apache
System : Linux dedi-14684855.grupobig.com 5.14.0-611.49.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Apr 21 16:39:08 EDT 2026 x86_64
User : grupo692 ( 1004)
PHP Version : 8.2.31
Disable Function : NONE
Directory :  /opt/dash_backend_new/app/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //opt/dash_backend_new/app/db.py
# app/db.py
from typing import Generator

import cx_Oracle
from fastapi import Depends, HTTPException

from .tenant_oracle_db import TenantContext, get_tenant_context, open_tenant_oracle_conn


def get_db_conn(ctx: TenantContext = Depends(get_tenant_context)) -> Generator[cx_Oracle.Connection, None, None]:
    """
    Dependency tenant-aware:
    - lê X-Empresa
    - busca configuração no MySQL central
    - conecta no Oracle correto
    - fecha conexão no final
    """

    # -------------------------------------------------------------------------
    # SANDBOX: não abre Oracle. Dependências ainda são resolvidas, então
    # devolvemos None e os endpoints devem retornar antes de usar `conn`.
    # -------------------------------------------------------------------------
    if getattr(ctx, "sandbox", False):
        yield None  # type: ignore
        return
    try:
        conn = open_tenant_oracle_conn(ctx)
    except cx_Oracle.DatabaseError as exc:
        raise HTTPException(
            status_code=500,
            detail=f"Falha ao conectar no Oracle da empresa '{ctx.empresa}' (DSN={ctx.oracle_dsn}): {exc}",
        )
    except Exception as exc:
        raise HTTPException(
            status_code=500,
            detail=f"Erro inesperado ao abrir conexão Oracle (empresa={ctx.empresa}): {type(exc).__name__}: {exc}",
        )

    try:
        yield conn
    finally:
        try:
            conn.close()
        except Exception:
            pass

Al-HUWAITI Shell