o
    iC                     @  s   d dl mZ d dlZd dlmZ d dlmZ dZd*ddZdZ	ej
de	 dejejB dZej
de	 dejejB dZej
de	 dejejB dZej
de	 dejdZd+ddZdddd,d!d"Zd-d%d&Zed' d' Zd.d(d)ZdS )/    )annotationsN)Mapping)AnyP   
attributesMapping[str, Any]message
str | None	span_namestrreturnc                 C  s   |  d}t|tsdS |dur||krdS | }t|trL|  d}|r<t|tr<||r<|dt| d  }n|}||vrDdS td|sLdS t|S )zTry to construct a useful span message from OTel db statement.

    Returns: A new string to use as span message or None to keep the original message.
    zdb.statementNzdb.name   z\S+)	get
isinstancer   stripendswithlenre	fullmatchsummarize_query)r   r   r
   db_statementdb_name	operation r   l/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/logfire/_internal/db_statement_summary.pymessage_from_db_statement
   s    



r   z
[\w."'`-]+zSELECT (.+?) FROM ()flagszWITH (.+?) SELECT (.+?) FROM (z SELECT (.+?) FROM (\(.+?\)) AS (zINSERT INTO (z) (\(.+?\)) VALUES (\(.+?\))r   c           	      C  s  |   } t| tkr| S tjdd| tjd} tdd|   } t| tkr'| S t|  }r@| \}}}t	|||
 | |dS t|  }rSt	| |
 | dS t|  }rl| \}}}t	|||
 | |dS t|  }r| \}}}d	| dt|d
 dt|d
 S t| S )zSummarize a database statement, specifically SQL queries.

    Args:
        db_statement: The database statement to summarize.

    Returns: A new string to use as span message or None to keep the original message.

    z^[ \t]*--.* r   z\s{2,} )	match_endr   	sub_query)r!   r   )r!   r   cteszINSERT INTO    z VALUES )r   r   MAX_QUERY_MESSAGE_LENGTHr   sub	MULTILINESELECT_SUBQUERY_REmatchgroupsselectend	SELECT_RESELECT_CTE_RE	INSERT_REtruncatefallback)	r   select_matchexprsubquerytabler#   insert_matchcolumnsvaluesr   r   r   r   2   s&   	"r   )r#   r"   r3   r5   r!   intr#   r"   c          
      C  sd  t | d} |rd|  dt |d dt |d }nd|  dt |d }|rQtjdt d|tjd	}t|d
krGdt |d d d| }n
dt| d| }tjdt d||d  tjd	}t|d
krv| dt |d d d}n|r| dt| d}tjd||d  tjd	r| d}tjd||d  tjd	 }	r| d|	d
 }t |tS )N   zSELECT z FROM r$   z AS    (z) ASr   r   zWITH r   
   u
    AS (…) u	   WITH …[z CTEs] zJOIN (r   z JOIN u    ON …u    …[z JOINs]WHEREu
    WHERE …zLIMIT (\d+)z LIMIT )	r0   r   findallTABLE_REIr   searchgroupr%   )
r3   r5   r!   r   r#   r"   summarycte_asjoinslimitr   r   r   r+   W   s&   
$"

r+   slengthc                 C  s8   t | |kr| S |d }| d |  d| | d   S )N   u   …)r   )rH   rI   half_lengthr   r   r   r0   x   s    r0   rJ   c                 C  s    | d t   d| t  d   S )Nu    … )FALLBACK_HALF)r   r   r   r   r1      s    r1   )r   r   r   r	   r
   r   r   r	   )r   r   r   r	   )r3   r   r5   r   r!   r9   r   r   r#   r	   r"   r	   r   r   )rH   r   rI   r9   r   r   )r   r   )
__future__r   r   collections.abcr   typingr   r%   r   r@   compilerA   DOTALLr-   r.   r(   r/   r   r+   r0   rL   r1   r   r   r   r   <module>   s"    
!
&
!