ó
    ñ|£g  ã                   ót   • S r SSKrSSKrSSKJr  SSKJr  SSKJr  \R                  " \	5      r
 " S S5      rg)	u¤   
Procesador base del sistema - MVP v1.0

Implementa la funcionalidad core para el procesamiento de datos,
estableciendo la base para los procesadores especÃ­ficos.
é    N)Údatetimeé   )Úconnect)Ú	DB_CONFIGc                   óH   • \ rS rSrS rS rS rS rS rSS jr	S	 r
S
 rSrg)ÚBaseProcessoré   c                 óœ   • Xl         S U l        SU l        SU l        SU l        [
        R                  " 5       U l        U R                  5         g )NFT)	Údb_nameÚconnÚverboseÚdebugÚrunningÚ	threadingÚLockÚlockÚ
connect_db)Úselfr   s     Ú2/var/www/blue/EV-Temp_rev04/src/processors/base.pyÚ__init__ÚBaseProcessor.__init__   s;   € ØŒØˆŒ	ØˆŒØˆŒ
ØˆŒÜ—N’NÓ$ˆŒ	Ø�‰Õó    c                 ó  •  [        U R                  5      U l        U R                  (       a#  [        R	                  SU R                   35        g g! [
         a"  n[        R                  SU 35         SnAgSnAff = f)u(   Establece conexiÃ³n con la base de datoszConectado a base de datos: Tu   Error de conexiÃ³n: NF)r   r   r   ÚloggerÚinfoÚ	ExceptionÚerror)r   Úes     r   r   ÚBaseProcessor.connect_db   so   € ð	5Ü §¡Ó-ˆDŒIØ�y�yÜ—‘Ð9¸$¿,¹,¸ÐHÔIØð ð
 øô ó 	5Ü�L‰LÐ/°¨sÐ3×4Ð4Øûð	5ús   ‚AA Á
A>ÁA9Á9A>c                 ó„   • U R                   (       a  U R                   R                  5       (       d  U R                  5       $ g)u3   Verifica y reestablece la conexiÃ³n si es necesarioT)r   Úis_connectedr   ©r   s    r   Úcheck_connectionÚBaseProcessor.check_connection%   s+   € à�y�y §	¡	× 6Ñ 6× 8Ñ 8Ø—?‘?Ó$Ð$Ør   c                 ó0  • U R                   (       + U l         U R                   (       a  [        R                  O[        R                  n[        R                  " 5       R                  U5        [        R                  SU R                   (       a  SOS 35        g)zCambia el modo verbosezModo verbose: ÚactivadoÚdesactivadoN)r   ÚloggingÚDEBUGÚINFOÚ	getLoggerÚsetLevelr   r   )r   Úlevels     r   Útoggle_verboseÚBaseProcessor.toggle_verbose+   sX   € àŸ<™<Ô'ˆŒØ!%§§”—’´7·<±<ˆÜ×ÒÓ×$Ñ$ UÔ+Ü�‰�n°4·<·<¡ZÀ]Ð$SÐTÕUr   c                 ó†   • U R                   (       + U l         [        R                  SU R                   (       a  SOS 35        g)zCambia el modo debugzModo debug: r&   r'   N)r   r   r   r"   s    r   Útoggle_debugÚBaseProcessor.toggle_debug2   s+   € àŸ™”^ˆŒ
Ü�‰�l°··¡:ÀÐ"OÐPÕQr   Nc                 óÆ  • U R                  5       (       d  gSn U R                  R                  SS9nUR                  X=(       d    S5        U(       a@  U R                  R	                  5         SUR
                  4U(       a  UR                  5         $ $ SUR                  5       4U(       a  UR                  5         $ $ ! [         a{  n[        R                  S[        U5       35        U R                  (       a  U R                  R                  5         S[        U5      4s SnAU(       a  UR                  5         $ $ SnAff = f! U(       a  UR                  5         f f = f)u  
Ejecuta una query con manejo de errores y reconexiÃ³n

Args:
    query (str): Query SQL a ejecutar
    params (tuple): ParÃ¡metros para la query
    commit (bool): Si se debe hacer commit despuÃ©s de ejecutar
    
Returns:
    tuple: (success, result/error)
)Fu   Sin conexiÃ³n a base de datosNT)Ú
dictionary© zError ejecutando query: F)r#   r   ÚcursorÚexecuteÚcommitÚrowcountÚcloseÚfetchallr   r   r   ÚstrÚrollback)r   ÚqueryÚparamsr8   r6   r   s         r   Úexecute_queryÚBaseProcessor.execute_query7   s  € ð ×$Ñ$×&Ñ&Ø9àˆð	Ø—Y‘Y×%Ñ%°Ð%Ð6ˆFØ�N‰N˜5§,¨BÔ/æØ—	‘	× Ñ Ô"Ø˜VŸ_™_Ð,ö Ø—‘•ð ð ˜VŸ_™_Ó.Ð.ö Ø—‘•ð øô ó 	!Ü�L‰LÐ3´C¸³F°8Ð<Ô=Ø�y�yØ—	‘	×"Ñ"Ô$Øœ#˜a›&�=Ô ö Ø—‘•ð ûð	!ûö Ø—‘•ð ús7   šA!B> ÂB> Â>
EÃAD>Ä EÄ!E Ä>EÅE ÅE c                 óä  • [         R                  S5        SU l        U R                  (       a”   U R                  R	                  5       (       as  U R                  R                  SS9nUR                  5         U R                  R                  5         U R                  R                  5         [         R                  S5        ggg! [         a"  n[         R                  SU 35         SnAgSnAff = f)z'Detiene el procesador y limpia recursoszDeteniendo el procesador...FT)Úbufferedu!   ConexiÃ³n a base de datos cerradau   Error cerrando conexiÃ³n: N)
r   r   r   r   r!   r6   r:   r8   r   r   )r   r6   r   s      r   ÚstopÚBaseProcessor.stop[   s³   € ä�‰Ð1Ô2ØˆŒà�9�9ð?Ø—9‘9×)Ñ)×+Ñ+Ø!ŸY™Y×-Ñ-°tÐ-Ð<�FØ—L‘L”NØ—I‘I×$Ñ$Ô&Ø—I‘I—O‘OÔ%Ü—K‘KÐ CÕDð ,ð øô ó ?Ü—‘Ð9¸!¸Ð=×>Ñ>ûð?ús   ¯BC Ã
C/ÃC*Ã*C/c                 ó   • [        S5      e)uO   
Obtiene mÃ©tricas del procesador.
Debe ser implementado por las clases hijas.
u)   MÃ©todo get_metrics debe ser implementado)ÚNotImplementedErrorr"   s    r   Úget_metricsÚBaseProcessor.get_metricsk   s   € ô
 "Ð"MÓNÐNr   )r   r   r   r   r   r   )NF)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r#   r.   r1   r@   rD   rH   Ú__static_attributes__r5   r   r   r   r      s.   † òò	òòVòRô
"òH?õ Or   r   )Ú__doc__r(   r   r   Údb.databaser   Úconfig.settingsr   r+   rJ   r   r   r5   r   r   Ú<module>rR      s9   ðñó Û Ý Ý !Ý 'à	×	Ò	˜8Ó	$€÷`Oò `Or   