o
    huh                     @   s   d dl Z d dlmZ d dlZd dlZd dlmZ d dlZe  e dZ	e
e ddZe dZe dZe d	Zd
d ZddefddZdefddZdede
fddZdede
fddZdS )    N)load_dotenv)JsonDB_HOSTDB_PORTi8  DB_NAMEDB_USERDB_PASSWORDc               
   C   s   z>t jtdtdtdtdtdd} |  }|dtd d	 W d    | W S 1 s7w   Y  | W S  tyV } ztd
| W Y d }~d S d }~ww )Nr   r   r   r   r   )hostportZdbnameuserpasswordzSET search_path TO ZCURRENT_SCHEMA;u   Error en la conexión:)psycopg2connectosgetenvcursorexecute	Exceptionprint)connr   e r   VC:\Users\Equipo\Documents\GitHub\reconocimiento-facial-lambda\connection\connection.pyobtener_conexion   s*   



r   sqlc              
   C   s   t  }|sd S zZz4| &}|| | |jr(| W  d    W W |  S |  W d    n1 s6w   Y  W n tyS } ztd| W Y d }~nd }~ww W |  d S W |  d S |  w )NzError al ejecutar consulta:)	r   r   r   descriptionZfetchallclosecommitr   r   )r   paramsr   r   r   r   r   r   ejecutar_consulta&   s*   


r    datac              
   C   s\   d}|  d|  d|  dt|  d|  d|  d|  d|  d	f}t|| d S )
Nz
    INSERT INTO auditoria (
        ip_cliente, metodo_http, url, headers, cuerpo, usuario, estado_respuesta, mensaje
    )
    VALUES (%s, %s, %s, %s, %s, %s, %s, %s);
    Z
ip_clienteZmetodo_httpurlheadersZcuerpoZusuarioZestado_respuestamensaje)getjsondumpsr    )r!   r   r   r   r   r   insertar_auditoria6   s   
r(   returnc                    s(   t  } fdd}|d |I d H S )Nc                     sn   t  } |  }|d d d d d dt df | d }|   |   |S )	Nz
            INSERT INTO face_recognition.consumo_tokens (
                modelo, tokens_utilizados, costo_aproximado, cedula, endpoint, respuesta_modelo
            ) VALUES (%s, %s, %s, %s, %s, %s)
            RETURNING id;
        modelotokens_utilizadoscosto_aproximadocedulaendpointrespuesta_modelor   )r   r   r   r%   r   Zfetchoner   r   )r   r   
consumo_idr!   r   r   _insertK   s   z(insertar_consumo_tokens.<locals>._insertasyncioget_running_looprun_in_executor)r!   loopr2   r   r1   r   insertar_consumo_tokensI   s   r8   r0   c                    s.   t  } fdd}|d |I d H  d S )Nc               
      s\   t  } |  }|dddtddd f |   |   d S )Nz
            INSERT INTO face_recognition.resultado_prueba_vida (
                cedula, video_base64, resultado_json, estado, tipo_error, consumo_tokens_id
            ) VALUES (%s, %s, %s, %s, %s, %s);
        r-   video_base64resultado_jsonestado
tipo_error)r   r   r   r%   r   r   r   )r   r   r0   r!   r   r   r2   d   s   z/insertar_resultado_prueba_vida.<locals>._insertr3   )r!   r0   r7   r2   r   r=   r   insertar_resultado_prueba_vidab   s   r>   )N)r   dotenvr   r   r&   Zpsycopg2.extrasr   r4   r   r   intr   r   r   r   r   strr    dictr(   r8   r>   r   r   r   r   <module>   s"    



