o
    h                     @   sz  d dl mZ d dlmZmZ d dlmZ d dlmZm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ er?d d	lmZmZ nG d
d dZG dd dZe Zzd dlZW n eya   e	dw ejdk rke	dG dd deZedZedZdeeef deeef fddZdeeef deeef fddZdeeef deeef fddZdedejjddfd d!Z dS )"    )Hub)OPSPANDATA)_should_send_default_pii)IntegrationDidNotEnable)Span)TYPE_CHECKING)capture_internal_exceptions)TypeVar)	ParamSpecCallablec                   @      e Zd Zdd ZdS )r   c                 C   s   d | _ d | _d S N)argskwargsself_ r   l/var/www/html/aiguide_backend/venv/lib/python3.10/site-packages/sentry_sdk/integrations/clickhouse_driver.py__init__   s   
zParamSpec.__init__N)__name__
__module____qualname__r   r   r   r   r   r          r   c                   @   r   )	_Callablec                 C   s   d S r   r   r   r   r   r   __getitem__   s   z_Callable.__getitem__N)r   r   r   r   r   r   r   r   r      r   r   Nz clickhouse-driver not installed.)r      r   z#clickhouse-driver >= 0.2.0 requiredc                   @   s   e Zd ZdZedddZdS )ClickhouseDriverIntegrationclickhouse_driverreturnNc                   C   sT   t tjjjtjj_ttjjjtjj_t	tjjj
tjj_
t	tjjjtjj_d S r   )_wrap_startr    
connection
Connection
send_query_wrap_send_dataclientClient	send_data	_wrap_endreceive_end_of_queryreceive_resultr   r   r   r   
setup_once-   s   


z&ClickhouseDriverIntegration.setup_once)r!   N)r   r   r   
identifierstaticmethodr-   r   r   r   r   r   *   s    r   PTfr!   c                    "   dt jdt jdtf fdd}|S )Nr   r   r!   c            	         s   t j}|td u r | i |S | d }| d }t| dkr#| d n|d}t| dkr2| d n|d}|jtj|d}||_	t
|| |d| |rU|d	| |r`t r`|d
|  | i |}|S )Nr      r   query_id   params)opdescriptionqueryzdb.query_id	db.params)r   currentget_integrationr   lenget
start_spanr   DB_sentry_span_set_db_dataset_datar   )	r   r   hubr#   r:   r5   r7   spanretr2   r   r   _innerH   s"   

z_wrap_start.<locals>._innerr0   r   r   r1   )r2   rI   r   rH   r   r"   G   s   r"   c                    r3   )Nr   r   r!   c                     s    | i |}| d }|j j}|d urE|d ur t r |d| t  |jj|jdd|jd W d    n1 s<w   Y  |	  |S )Nr   z	db.resultr:   )messagecategorydata)
r#   rB   r   rD   r
   rE   add_breadcrumb_datapopfinish)r   r   resinstancerF   rH   r   r   
_inner_endh   s   z_wrap_end.<locals>._inner_endrJ   )r2   rT   r   rH   r   r*   g   s   r*   c                    r3   )Nr   r   r!   c                     s\   | d }| d }|j j}t||j  t r'|jdg }|| |d|  | i |S )Nr   r   r;   )r#   rB   rC   r   rO   r?   extendrD   )r   r   rS   rM   rF   	db_paramsrH   r   r   _inner_send_data~   s   
z)_wrap_send_data.<locals>._inner_send_datarJ   )r2   rW   r   rH   r   r&   }   s   r&   rF   r#   c                 C   sR   |  tjd |  tj|j |  tj|j |  tj|j |  tj	|j
 d S )N
clickhouse)rD   r   	DB_SYSTEMSERVER_ADDRESShostSERVER_PORTportDB_NAMEdatabaseDB_USERuser)rF   r#   r   r   r   rC      s
   rC   )!
sentry_sdkr   sentry_sdk.constsr   r   sentry_sdk.hubr   sentry_sdk.integrationsr   r   sentry_sdk.tracingr   sentry_sdk._typesr	   sentry_sdk.utilsr
   typingr   r   r   r   r    ImportErrorVERSIONr   r0   r1   r"   r*   r&   r#   r$   rC   r   r   r   r   <module>   sB    
"" "