o
    õ+sj˜  ã                   @   s†   d dl Z d dlmZ d dlZd dlmZ eeeƒ ¡ jjd ƒ h d£Z	ddd„Z
dd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )é    N)ÚPath)Úload_dotenvz.env>   ÚPRS_iniciarÚEDT_homonimiaÚPRS_finalizarÚPRS_log_eventoÚgestor_promptsÚrecorrerEdictosÚopenai_edictos_diaÚopenai_insert_jsonÚEDT_homonimia_obtenerÚgestor_batch_procesosÚbuscador_paises_padronÚopenai_insert_personasÚEDT_homonimia_id_padronÚEDT_homonimia_relacionesÚopenai_insert_vinculadasÚEDT_homonimia_asignar_cuitÚEDT_homonimia_relleno_cuitÚinsert_edictos_queue_stagingÚEDT_homonimia_marcar_multipleÚEDT_homonimia_marcar_negativoÚEDT_homonimia_buscar_en_sociosÚEDT_homonimia_obtener_sociedadÚ#EDT_homonimia_buscar_en_accionistasÚ'openai_insert_sociedades_constitucionesc                 C   sª   | t vrtd| ›�ƒ‚|d u }|d ur|ntƒ }z4| ¡ }d dgt|ƒ ¡}| d| › d|› �t|ƒ¡ t|ƒ}|r?| 	¡  | 
¡  |W |rL| 
¡  S S |rT| 
¡  w w )NúStored procedure no permitido: ú,ú?úEXEC ú )Ú_SP_PERMITIDOSÚ
ValueErrorÚ	_conectarÚcursorÚjoinÚlenÚexecuteÚtupleÚ_fetch_resultÚcommitÚclose)Úprocedure_nameÚparamsÚconnÚ
_owns_connÚ_connr$   ÚplaceholdersÚresult© r3   ú6/home/develop/edictos_py/central_edictos/helpers/db.pyÚejecutar_sp%   s$   
ÿ
ÿr5   c                 C   s�   | t vrtd| ›�ƒ‚| ¡ }z3d dgt|ƒ ¡}| d| › d|› �t|ƒ¡ z
| ¡ W W | ¡  S  t	j
yB   Y W | ¡  dS w | ¡  w )zXComo ejecutar_sp pero usa conn externo, no hace commit y devuelve filas crudas (tuplas).r   r   r   r   r    N)r!   r"   r$   r%   r&   r'   r(   Úfetchallr+   ÚpyodbcÚProgrammingError©r,   r-   r.   r$   r1   r3   r3   r4   Úejecutar_sp_raw8   s   

ýý
r:   c                    s®   | t vrtd| ›�ƒ‚| ¡ }zBd dgt|ƒ ¡}| d| › d|› �t|ƒ¡ zdd„ |jD ƒ‰ ‡ fdd„| ¡ D ƒW W | 	¡  S  t
jyQ   Y W | 	¡  d	S w | 	¡  w )
zSComo ejecutar_sp_raw pero devuelve lista de dicts con nombre de columna como clave.r   r   r   r   r    c                 S   ó   g | ]}|d  ‘qS ©r   r3   ©Ú.0Úcolr3   r3   r4   Ú
<listcomp>Q   ó    z$ejecutar_sp_dict.<locals>.<listcomp>c                    ó   g | ]	}t tˆ |ƒƒ‘qS r3   ©ÚdictÚzip©r>   Úrow©Úcolsr3   r4   r@   R   ó    N)r!   r"   r$   r%   r&   r'   r(   Údescriptionr6   r+   r7   r8   r9   r3   rH   r4   Úejecutar_sp_dictH   s   
ýý
rL   c                   C   s   t ƒ S ©N)r#   r3   r3   r3   r4   ÚconectarY   s   rN   c                  C   s   t ƒ } d| _| S )NT)r#   Ú
autocommit)r.   r3   r3   r4   Úconectar_readonly\   s   rP   c                  C   s^   t  d¡} t  d¡}t  d¡}t  d¡}t  dd¡}t d|› d| › d	|› d
|› d|› d�¡S )NÚ	DB_SERVERÚDB_DATABASEÚDB_USERÚDB_PASSWORDÚ	DB_DRIVERzODBC Driver 18 for SQL ServerzDRIVER={z
};SERVER={z};PORT=1433;DATABASE={z};UID={z};PWD={z};TrustServerCertificate=yes;)ÚosÚgetenvr7   Úconnect)ÚserverÚdatabaseÚusernameÚpasswordÚdriverr3   r3   r4   r#   a   s   



ÿÿÿÿr#   c                    sZ   	 z|   ¡ }|rdd„ | jD ƒ‰ ‡ fdd„|D ƒW S W n
 tjy%   Y nw |  ¡ s,d S q)NTc                 S   r;   r<   r3   r=   r3   r3   r4   r@   r   rA   z!_fetch_result.<locals>.<listcomp>c                    rB   r3   rC   rF   ©Úcolumnsr3   r4   r@   s   rJ   )r6   rK   r7   r8   Únextset)r$   Úrowsr3   r^   r4   r)   m   s   þÿ÷r)   rM   )rV   Úpathlibr   r7   Údotenvr   Ú__file__ÚresolveÚparentr!   r5   r:   rL   rN   rP   r#   r)   r3   r3   r3   r4   Ú<module>   s    
