
    Xje              
          d dl mZ d dlmZmZmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZmZmZ d dlmZ d dlmZmZmZ d dlmZ  ee          Z ed	g
          Ze                    dee                   d d ee
           e ed	                    fdededede	fd            Ze                    de           ee
           e ed	                    fdedede	fd            Ze                     de           ee
           e ed	                    fdedede	fd            Z!e"                    de           ee
           e ed	                    fdededede	fd            Z#e$                    d           ee
           e ed	                    fdedede	fd            Z%e                     d           ee
           e ed	                    fdede&e'ef         dede	fd            Z(dS )    )Any)	APIRouterDependsHTTPException)Session)Userget_db)require_createrequire_deleterequire_readrequire_update)Tool)
ToolCreateToolResponse
ToolUpdate)
get_loggertools)tags/)response_modeld   skiplimitdbcurrent_userc                    |                     t                                        t          j         t          j        |j        k                                  |                               |                                          }|S )N)queryr   filter
is_deleted	tenant_idoffsetr   all)r   r   r   r   r   s        B/lsinfo/ai/hellotax_ai/training_center/backend/app/api/v1/tools.py	get_toolsr$      se    HHTNN!!do"5t~I_7_``gghlmmsstyzz~~  A  AEL    z
/{tool_id}tool_idc                    |                     t                                        t          j        | k    t          j         t          j        |j        k                                              }|st          dd          |S )N  Tool not foundstatus_codedetail)r   r   r   idr   r    firstr   r&   r   r   tools       r#   get_toolr1      sh    88D>>  G!35H$.\h\rJrssyy{{D F4DEEEEKr%   tool_inc                 B   t          di |                                 |j        |j        d}|                    |           |                                 |                    |           t                              |j                  	                    d           |S )N)r    
created_byr&   zTool created )
r   
model_dumpr    r-   addcommitrefreshloggerbindinfo)r2   r   r   r0   s       r#   create_toolr>      s    ee'$$&&e,2HUaUdeeeeDFF4LLLIIKKKJJt
KKK  %%n555Kr%   c                    |                     t                                        t          j        | k    t          j         t          j        |j        k                                              }|st          dd          |                    d          	                                D ]\  }}t          |||           |                                 |                    |           |S )Nr(   r)   r*   T)exclude_unset)r   r   r   r-   r   r    r.   r   r7   itemssetattrr9   r:   )r&   r2   r   r   r0   fieldvalues          r#   update_toolrE   &   s    88D>>  G!35H$.\h\rJrssyy{{D F4DEEEE***>>DDFF $ $ueU####IIKKKJJtKr%   c                    |                     t                                        t          j        | k    t          j         t          j        |j        k                                              }|st          dd          d|_        |                                 t          
                    |                               d           ddiS )Nr(   r)   r*   Tr5   zTool deletedmessage)r   r   r   r-   r   r    r.   r   r9   r;   r<   r=   r/   s       r#   delete_toolrH   1   s    88D>>  G!35H$.\h\rJrssyy{{D F4DEEEEDOIIKKK
KKK  %%n555~&&r%   z/{tool_id}/executeparamsc                    |                     t                                        t          j        | k    t          j         t          j        |j        k                                              }|st          dd          ddlm	}  |            }	 |
                    |j        |          }t                              |                               d           |dd	S # t          $ ra}t                              |                               d
t#          |                     t          dt#          |                    d d }~ww xY w)Nr(   r)   r*   r   )ToolExecutorr5   zTool executedsuccess)resultstatuszTool execution failed)errori  )r   r   r   r-   r   r    r.   r   app.services.tool_executorrK   executecoder;   r<   r=   	ExceptionrO   str)	r&   rI   r   r   r0   rK   executorrM   es	            r#   execute_toolrW   ;   s9   88D>>  G!35H$.\h\rJrssyy{{D F4DEEEE777777|~~HF!!$)V44G$$))/::: I666 F F FG$$**+B#a&&*QQQCFF;;;EFs   AC   
E*AEEN))typingr   fastapir   r   r   sqlalchemy.ormr   app.api.depsr   r	   app.api.permissionsr
   r   r   r   
app.modelsr   app.schemas.toolr   r   r   common_loggingr   __name__r;   routergetlistintr$   r1   postr>   putrE   deleterH   dictrT   rW   r6   r%   r#   <module>ri      s         5 5 5 5 5 5 5 5 5 5 " " " " " " % % % % % % % % \ \ \ \ \ \ \ \ \ \ \ \       A A A A A A A A A A % % % % % %	H					"	"	"C\ 233cwwv[b[bcocopwcxcx[y[y  C # w VZ    43 L66'.wv77S_S_`gShShKiKi  c w d    76 S..18U\U\]k]kls]t]tUuUu    PT    /. L66?Fwvcjcjkyky  {B  lC  lC  dD  dD   z w ^b    76 |*1'&//ggVdVdelVmVmNnNn ' ' '' ' ' ' ' ' !""CJ76??gngno{o{  }D  pE  pE  hF  hF F F# FtCH~ F7 Fbf F F F #"F F Fr%   