
    Ng                         d dl Z d dlZd dlZd dlmZmZmZmZ d dlm	Z	 d dl
mZ  ej        e          Z G d de          ZdS )    N)AnyDictListOptional)Document)
BaseLoaderc                   n    e Zd ZdZ	 d
dee         deddfdZddZde	e
         fdZde	e
         fd	ZdS )SurrealDBLoaderzLoad SurrealDB documents.Nfilter_criteriakwargsreturnc                    	 ddl m} n"# t          $ r}t          d          |d }~ww xY w|                    dd          | _        | j        dd         dk    r || j                  | _        nt          d          |pi | _        d	| j        v rt          d
          |                    dd          | _        |                    dd          | _	        |                    d	d          | _
         || j                  | _        || _        d S )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        j/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/document_loaders/surrealdb.py__init__zSurrealDBLoader.__init__   s8   
	))))))) 	 	 	@  	 ZZ)BCC
:ac?d""wtz**DHHUVVV.4"d***U   **T;//**T:..ZZ55
74:&&s   	 
(#(c                 p  K   | j                                          d{V  d| j        v r`d| j        v rW| j                            d          }| j                            d          }| j                             ||d           d{V  | j                             | j        | j                   d{V  dS )zr
        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    
initializezSurrealDBLoader.initialize1   s      
 h         ##	T[(@(@;??9--D{y11H(//4"B"BCCCCCCCCChll47DG,,,,,,,,,,,    c                 l     dt           t                   f fd}t          j         |                      S )Nr   c                  p   K                                      d {V                                    d {V S N)r,   aload)r   s   r    _loadz#SurrealDBLoader.load.<locals>._load?   sI      //#########%%%%%%%r-   )r   r   asynciorun)r   r2   s   ` r    loadzSurrealDBLoader.load>   sD    	&T(^ 	& 	& 	& 	& 	& 	& {5577###r-   c                 p  K   d}| j         Mt          | j                   dk    r5|dz  }t          | j                   D ]\  }}|d|dk    rdnd d| d| z  }| j        | j        | j        d	| j                            |d
| j        i| j                    d{V }fd|d         d         D             S )z Load data into Document objects.z!SELECT * FROM type::table($table)Nr   z WHERE  AND z = $)r   r   r   r   c                 z    g | ]7}t          t          j        |          d |d          i|d                   8S )idmetadata)page_contentr<   )r   jsondumps).0resultr<   s     r    
<listcomp>z)SurrealDBLoader.aload.<locals>.<listcomp>W   sb     
 
 
  !%F!3!3"F4LSF:4FS(S  
 
 
r-   rA   )r   len	enumerater   r   r   r   query)r   rE   idxkeyresultsr<   s        @r    r1   zSurrealDBLoader.aloadE   s#      4+D4H0I0IA0M0MYE%d&:;; K KSJauuRJJ#JJ3JJJ ''Z
 

 GTZ@4+?@
 
 
 
 
 
 
 

 
 
 
 "!*X.
 
 
 	
r-   r0   )r   N)__name__
__module____qualname____doc__r   r   r   r!   r,   r   r   r5   r1    r-   r    r
   r
      s        ## +/ !$  
	   B- - - -$d8n $ $ $ $
T(^ 
 
 
 
 
 
r-   r
   )r3   r>   loggingtypingr   r   r   r   langchain_core.documentsr   )langchain_community.document_loaders.baser   	getLoggerrI   loggerr
   rM   r-   r    <module>rT      s       , , , , , , , , , , , , - - - - - - @ @ @ @ @ @		8	$	$R
 R
 R
 R
 R
j R
 R
 R
 R
 R
r-   