
    )M6i                         d dl Zd dl mZ d dlZd dlZd dlZd dlmZ  e         ej                  ej                  d ej                  d       ej                  ej                        g        G d d      Zd	 Zy)
    N)Error)load_dotenvz)%(asctime)s - %(levelname)s - %(message)szdb_errors.log)levelformathandlersc                   F    e Zd ZdZd Zd ZddZddZddZd Z	d	 Z
d
 Zy)DatabaseConnectionu(   Classe para gerenciar conexão com MySQLc                     t        j                  dd      | _        t        j                  dd      | _        t        j                  dd      | _        t        j                  dd      | _        d | _        d | _        y )	NDB_HOST	localhostDB_NAMEbatalhaoDB_USERrootDB_PASSWORDjoaopaulo262004)osgetenvhostdatabaseuserpassword
connectioncursorselfs    )/var/www/html/batalhaodecristo/conexao.py__init__zDatabaseConnection.__init__   sY    IIi5			)Z8IIi0			-1BC    c           	         	 t         j                  j                  | j                  | j                  | j
                  | j                  ddd      | _        | j                  j                         r"| j                  j                  d      | _	        y	 y# t        $ r(}t        j                  d|        t        d      d	}~ww xY w)
u(   Estabelece conexão com o banco de dadosutf8mb4utf8mb4_unicode_ciF)r   r   r   r   charset	collation
autocommitT)
dictionaryz$Erro ao conectar ao banco de dados: z"Erro ao conectar ao banco de dadosN)mysql	connectorconnectr   r   r   r   r   is_connectedr   r   loggingerror	Exception)r   es     r   r)   zDatabaseConnection.connect    s    	B#oo55YYYY!.  6 DO ++-"oo444E . 	  	BMM@DE@AA	Bs   BB 	C#B??CNc                    	 |r| j                   j                  ||       n| j                   j                  |       | j                   j                         S # t        $ r+}t	        j
                  d|        t        d|       d}~ww xY w)z0Executa uma query SELECT e retorna os resultadosErro ao executar query: N)r   executefetchallr   r+   r,   r-   r   queryparamsr.   s       r   execute_queryz DatabaseConnection.execute_query7   z    
	<##E62##E*;;'')) 	<MM4QC896qc:;;	<   AA 	B
&BB
c                    	 |r| j                   j                  ||       n| j                   j                  |       | j                   j                         S # t        $ r+}t	        j
                  d|        t        d|       d}~ww xY w)u6   Executa uma query SELECT e retorna um único resultador0   N)r   r1   fetchoner   r+   r,   r-   r3   s       r   execute_onezDatabaseConnection.execute_oneE   r7   r8   c                 z   	 |r| j                   j                  ||       n| j                   j                  |       | j                  j                          | j                   j                  S # t
        $ rE}| j                  j                          t        j                  d|        t        d|       d}~ww xY w)z&Executa uma query INSERT/UPDATE/DELETEzErro ao executar update: N)
r   r1   r   commitrowcountr   rollbackr+   r,   r-   r3   s       r   execute_updatez!DatabaseConnection.execute_updateS   s    	=##E62##E*OO""$;;''' 	=OO$$&MM5aS9:7s;<<	=s   A)A, ,	B:5A B55B:c                     | j                   r| j                   j                          | j                  r6| j                  j                         r| j                  j                          yyy)u%   Fecha a conexão com o banco de dadosN)r   closer   r*   r   s    r   rB   zDatabaseConnection.closec   sF    ;;KK??t;;=OO!!#  >?r   c                 &    | j                          | S )z&Permite uso com context manager (with))r)   r   s    r   	__enter__zDatabaseConnection.__enter__j   s    r   c                 $    | j                          y)u)   Fecha conexão ao sair do context managerN)rB   )r   exc_typeexc_valexc_tbs       r   __exit__zDatabaseConnection.__exit__o   s    

r   )N)__name__
__module____qualname____doc__r   r)   r6   r;   r@   rB   rD   rI    r   r   r	   r	      s-    2.<<= $
r   r	   c                  :    t               } | j                          | S )u,   Função helper para obter uma nova conexão)r	   r)   )dbs    r   get_db_connectionrQ   t   s    		BJJLIr   )mysql.connectorr'   r   r+   sysr   dotenvr   basicConfigERRORFileHandlerStreamHandlerstdoutr	   rQ   rN   r   r   <module>rZ      su     !  
 	     
--6O,cjj)\ \~r   