
    i	                         d dl Z d dlmZ d dlmZmZmZ d dlmZ d dl	m
Z
 d dlmZ ddlmZmZmZmZ  ee      Zed	ed
eeeef      fd       Zy)    N)Path)ListDictAny)tool)
db_session)
get_logger   )MAX_SQL_TOOL_ROWSmssql_wrap_top_subquerynormalize_llm_sqlvalidate_llm_sqlqueryreturnc                    t         j                  d| xs ddd        	 t        |       }t        |      }|rt         j	                  d|       d|igS t        |t              }t        j                  |      }t        |      t        kD  r	|dt         }t         j                  dt        |             |S # t        $ r}| xs d}t        |      dkD  r|dd d	z   n|}t        j                  |j                        }|r|d
   nd}	|	r.t        |	j                        j                    d|	j"                   nd}
t         j%                  d|
t        t&              j                   |       ddigcY d}~S d}~ww xY w)z
    Executes a read-only SQL query against the MS SQL Server database.
    Only a single SELECT (or WITH ... SELECT) is allowed.
    Returns: List of dictionaries (rows), at most MAX_SQL_TOOL_ROWS from the server.
    z"llm query (truncated for logs): %s Ni,  zSQL tool rejected query: %serrorzwas successful True (%s rows)i  u   …:unknownzHSQL tool execution failed (raised at %s; handler %s; query for logs): %szQuery execution failed.)loggerinfor   r   r   r   r   r   executelen	Exception	traceback
extract_tb__traceback__r   filenamenamelineno	exception__file__)r   qnerrwrappedrowse_q
_q_preview_tb_loc_raised_wheres              B/var/www/html/userprofiledev.eatanceapp.com/deep_analysis/tools.pyexecute_sql_queryr/      s^    KK4u{DS6IJ(6u%r"LL6<cN##)".?@!!'*t9((**+D3SY? 6[b+.r7S=b#h&b
""1??3s2w4;?tDMM"''($++7Y 	 	VN		
" 345536s%   2B3 A B3 3	E2<B+E-'E2-E2)r   pathlibr   typingr   r   r   langchain_core.toolsr   core.db_connectionr   core.logger_configr	   
sql_safetyr   r   r   r   __name__r   strr/        r.   <module>r:      s_      " " % ) )  
H	 /6S /6T$sCx.%9 /6 /6r9   