
    dh                         S SK r S SKrS SKrS SKJrJrJrJr  S SKJ	r	  S SK
Jr  \R                  " \5      r " S S\5      rg)    N)AnyDictListOptional)Document)
BaseLoaderc                   l    \ rS rSrSr SS\\   S\SS4S jjrSS jr	S\
\   4S	 jrS\
\   4S
 jrSrg)SurrealDBLoader   zLoad SurrealDB documents.Nfilter_criteriakwargsreturnc                     SSK Jn  UR                  SS5      U l        U R                  SS S:X  a  U" U R                  5      U l        O[        S5      eU=(       d    0 U l        S	U R                  ;   a  [        S
5      eUR                  SS5      U l        UR                  SS5      U l	        UR                  S	S5      U l
        U" U R                  5      U l        X l        g ! [         a  n[        S5      UeS nAff = f)Nr   )SurrealzZCannot import from surrealdb.
                please install with `pip install surrealdb`.dburlzws://localhost:8000/rpc   wsz6Only websocket connections are supported at this time.tablezCkey `table` is not a valid criteria for `filter_criteria` argument.ns	langchaindbdatabase	documents)	surrealdbr   ImportErrorpopr   sdb
ValueErrorr   r   r   r   r   )selfr   r   r   es        f/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/document_loaders/surrealdb.py__init__SurrealDBLoader.__init__   s    
	) ZZ)BC
::a?d"tzz*DHUVV.4"d***U  **T;/**T:.ZZ5
4::&1  	@ 	s   C# #
C>-C99C>c                   #    U R                   R                  5       I Sh  vN   SU R                  ;   ak  SU R                  ;   a[  U R                  R                  S5      nU R                  R                  S5      nU R                   R	                  XS.5      I Sh  vN   U R                   R                  U R                  U R                  5      I Sh  vN   g N N? N	7f)zZ
Initialize connection to surrealdb database
and authenticate if credentials are provided
Ndb_userdb_pass)userpass)r   connectr   getsigninuser   r   )r   r'   passwords      r!   
initializeSurrealDBLoader.initialize1   s     
 hh   #	T[[(@;;??9-D{{y1H((//4"BCCChhll477DGG,,, 	! D,s4   CCA:CC7CCCCCc                 d   ^  S[         [           4U 4S jjn[        R                  " U" 5       5      $ )Nr   c                  t   >#    T R                  5       I S h  vN   T R                  5       I S h  vN $  N N7fN)r.   aload)r   s   r!   _load#SurrealDBLoader.load.<locals>._load?   s-     //###%% $%s   848688)r   r   asynciorun)r   r4   s   ` r!   loadSurrealDBLoader.load>   s&    	&T(^ 	& {{57##    c           	        #    SnU R                   bR  [        U R                   5      S:  a9  US-  n[        U R                   5       H  u  p#USUS:  a  SOS SU SU 3-  nM     U R                  U R                  U R
                  S	.nU R                  R                  US
U R
                  0U R                   E5      I Sh  vN nUS   S    Vs/ sH-  n[        [        R                  " U5      SUS   0US   EUES9PM/     sn$  NDs  snf 7f)z Load data into Document objects.z!SELECT * FROM type::table($table)Nr   z WHERE  AND z = $)r   r   r   r   resultidmetadata)page_contentrA   )r   len	enumerater   r   r   r   queryr   jsondumps)r   rE   idxkeyrA   resultsr?   s          r!   r3   SurrealDBLoader.aloadE   s&     4+D4H4H0IA0MYE%d&:&:;QauR8#d3%JJ < ''''ZZ

 GTZZ@4+?+?@
 
 "!*X.
 / !%F!3"F4LSF:4FS(S
 /
 	
	

s$   B=D?D D3DDD)r   r   r   r   r   r   r   r2   )r   N)__name__
__module____qualname____firstlineno____doc__r   r   r   r"   r.   r   r   r8   r3   __static_attributes__ r:   r!   r
   r
      sU    # +/!$  
	B-$d8n $
T(^ 
r:   r
   )r6   rF   loggingtypingr   r   r   r   langchain_core.documentsr   )langchain_community.document_loaders.baser   	getLoggerrL   loggerr
   rR   r:   r!   <module>rY      s8       , , - @			8	$R
j R
r:   