
    %g                        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 d dlmZ d dlmZ 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mZ  e         ej.                  d      Z ej.                  d      Z ej.                  d      Z ej.                  d      Z e       Z ej:                   ej<                  eeee            Z eee      Z  G d de      Z! G d de      Z"ejG                  de"       ee      fde!fd       Z$y)    )	APIRouterHTTPExceptionDepends)	BaseModel)Session)SessionLocal)SQLQueryAgent)get_current_user)BranchN)Field)engine)load_dotenvAZURE_OPENAI_API_KEYAZURE_OPENAI_ENDPOINTAZURE_OPENAI_DEPLOYMENTAZURE_OPENAI_API_VERSION)api_keyapi_versionazure_endpointazure_deployment)client	db_enginec                       e Zd ZU eed<   y)QueryRequestquestionN)__name__
__module____qualname__str__annotations__     ;/var/www/html/hubwallet-dev/src/apps/chatbot/chat_output.pyr   r   "   s    Mr"   r   c                       e Zd ZU eed<   y)QueryResponseresultN)r   r   r   dictr    r!   r"   r#   r%   r%   &   s    Lr"   r%   z/query)response_modelrequestc                    	 t               5 }|j                  t              j                  t        j                  |j                  k(        j                         }ddd       st        dd      |j                  }t        j                  | j                  d|i      }t        |j                               S # 1 sw Y   `xY w# t        $ r}t        dt        |            d}~ww xY w)z
    API endpoint to process user queries and return SQL results.
    Fetches branch_id by comparing Branch.user_id with current_user.user_id.
    Ni  z%No branch found for the current user.)status_codedetail	branch_id)r&   i  )r   queryr   filteruser_idfirstr   r-   	sql_agentprocess_queryr   r%   
model_dump	Exceptionr   )r)   current_usersessionbranchr-   responsees          r#   query_databaser;   +   s    <^ 	bw]]6*11&..LDXDX2XY__aF	b C8_`` $$	 **7+;+;k)=TU H$7$7$9::	b 	b   <CF;;<s0   
C AB9AC 9C>C 	C)C$$C))%fastapir   r   r   pydanticr   sqlalchemy.ormr   src.utils.dbr   src.core.chatbot_SQLAgentr	   src.apps.auth.controllerr
   src.apps.stores.modelsr   
instructorr   openaiosr   dotenvr   getenvAPI_KEYENDPOINT
DEPLOYMENTAPI_VERSIONrouterfrom_openaiAzureOpenAIr   r2   r   r%   postr;   r!   r"   r#   <module>rP      s   5 5  " % 3 5 )    	    "))*
+299,-RYY01
bii23 
 
 		 2 2 27Q\mu  HR  !S  
T&9	9 I 
 Xm49@AQ9R <L < 5<r"   