
    (8i(                        d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
mZmZ  e j                  e      Zej!                  d       	  e       j#                  d      Zej%                  d	ej'                  d
       dej'                  d              ej'                  d      Zej'                  d      Zej'                  d
      Zej'                  d      Zej'                  d      Zeeeeedj3                         D  cg c]	  \  } }|s|  c}} Zer-ddj7                  e       Zej;                  e        ee      ej!                  d        ejB                  deee e"e      e      Z# e
e#ddddddd      Z$ e       Z% ee$eddd       Z&d!eedf   fd"Z'd!eedf   fd#Z(ej!                  d$       	  e       j#                  d%      Z)ej%                  d&e)j'                  d
       de)j'                  d              e)j'                  d      Z*e)j'                  d      Z+e)j'                  d
      Z,e)j'                  dd'      Z-e)j'                  d      Z.e*e+e,e-e.d(j3                         D  cg c]	  \  } }|s|  c}} Z/e/r-d)dj7                  e/       Zej;                  e        ee      ej!                  d*        ejB                  d,e*e+e, e"e-      e.d-d.d/0      Z0 e
e0ddddd1      Z1 e       Z2 ee1eddd       Z3d!eedf   fd2Z4yc c}} w # e$ rZ ej;                  de  d        dZ [ ww xY wc c}} w # e$ rZ ej;                  d+e  d        dZ [ ww xY w)3    N)AsyncGenerator)URL)Config)declarative_base)create_async_engineasync_sessionmakerAsyncSessionu3   Inicializando configuração do DataLake (MySQL)...dataLakezConfig DataLake recebida: host=hostz, database=databaseuserpasswordport)DATALAKE_USERDATALAKE_PASSWORDDATALAKE_HOSTDATALAKE_PORTDATALAKE_DATABASEu,   Variáveis de ambiente ausentes para MySQL: z, u/   Configuração do DataLake validada com sucessozErro ao configurar DataLake: Texc_infozmysql+aiomysql)
drivernameusernamer   r   r   r      
   i  utf8mb4F)charset
autocommit)	pool_sizemax_overflowpool_pre_pingpool_recycleconnect_args)bindclass_expire_on_commit	autoflushr   returnc                    K   t               4 d {   } |  d d d       d {    y 7 7 # 1 d {  7  sw Y   y xY ww)NAsyncSessionLocalsessions    $/srv/www/app-alerta/core/database.pyget_dbr.   D   sB      "  g      8   A,A0A.AAA9AAc                    K   t               4 d{   } |  ddd      d{    y7 7 # 1 d{  7  sw Y   yxY ww)u;   Alias para get_db() - retorna sessão MySQL (DataLake/Omie)Nr)   r+   s    r-   get_mysql_dbr1   H   sB      "  g      r/   u-   Inicializando configuração do SQL Server...	sqlServerz!Config SQL Server recebida: host=1433)SQLSERVER_USERSQLSERVER_PASSWORDSQLSERVER_HOSTSQLSERVER_PORTSQLSERVER_DATABASEu1   Variáveis de ambiente ausentes para SQL Server: u1   Configuração do SQL Server validada com sucessozErro ao configurar SQL Server: zmssql+aioodbczODBC Driver 17 for SQL Serveryes)driverTrustServerCertificate)r   r   r   r   r   r   query)r   r   r    r!   echoc                 J  K   t         j                  d       	 t               4 d {   } t         j                  d       	 |  t         j                  d       t         j                  d       d d d       d {    y 7 Z# t         j                  d       w xY w7 !# 1 d {  7  sw Y   y xY w# t        $ rb}ddlm} t        ||      r0t         j                  d|j                   d|j                           t         j                  d	| d
        d }~ww xY ww)Nu    Criando sessão do SQL Server...u(   Sessão do SQL Server criada com sucessou!   Fechando sessão do SQL Server...u)   Sessão do SQL Server fechada com sucessor   )HTTPExceptionz2HTTPException propagada (comportamento esperado): z - u,   Erro ao criar/fechar sessão do SQL Server: Tr   )
loggerdebugSqlServerAsyncSessionLocal	Exceptionfastapir?   
isinstancestatus_codedetailerror)r,   er?   s      r-   get_sqlserver_dbrJ      s     
LL34-/ 	F 	F7LLCDB@ALLDE	F 	F 	F
 @A	F 	F 	F 	F  )a'LLMamm_\_`a`h`h_ijkCA3GRVWs   D#B5 BB5 B B*B 1B5 <B=B5 D#B5 BB B5  B2&B)'B2.B5 1D#2B5 5	D >ADD  D#)5loggingtypingr   sqlalchemy.enginer   utils.configr   sqlalchemy.ormr   sqlalchemy.ext.asyncior   r   r	   	getLogger__name__r@   infoconfigrA   getDB_USERDB_PASSWORDDB_HOSTDB_PORTDB_NAMEitemsmissingjoin	error_msgrH   RuntimeErrorrC   rI   createintASYNC_DATABASE_URLasync_engineBaser*   r.   r1   sqlserver_configr4   r5   r6   r7   r8   sqlserver_missingASYNC_SQLSERVER_URLsqlserver_async_engineSqlServerBaserB   rJ   )kvs   00r-   <module>rl      s    ! !  + X X			8	$ A B
X__Z(F
LL26::f3E2FkRXR\R\]gRhQijkjj G**Z(Kjj Gjj Gjj$G !(  $ egTQ   G B499WCUBVW	Y9%%
KKAB
  SZZ		W  #&e< &	 n\4%78 N<+=> 
 ; <
x{3
LL45E5I5I&5Q4RR]^n^r^rs}^~]  A  B%))&1N)--j9%))&1N%))&&9N)--j9 )0((0( egtq!    G		RcHdGef	Y9%%
KKCD
 !cjj		^	1"'  -	  !"/	 |T/A B i  

LL04tLD	
h  

LL21#6LF	
sX   B9L# LAL# B:M ;M	AM L# #M(L??MM M.M))M.