
    Nh                     z   d dl mZmZmZmZmZ d dlmZ d dlZd dl	m
Z
 d dlmZ ddlmZ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mZmZmZmZmZmZ  e       Zej=                  dej>                  dd       ee
      fdefd       Z ej=                  d       eddd       edddd      fdede!de!fd       Z"ejG                  d      d        Z$ejG                  d      d e%fd!       Z&ejO                  d"      d e%fd#       Z(ejG                  d$      d e%fd%       Z)ejG                  d&      d'        Z*y)(    )FastAPIHTTPExceptionDepends	APIRouterstatus)ListN)get_db)Session   )SearchRequestSearchResponse)QdrantService)Query)JSONResponse)insert_documents_handlersearch_handlerlist_collections_handlercollection_info_handlerdelete_collection_handlercount_points_handlerhealth_handlerz/documents/bulk-insertz*Bulk insert templates into vector databasez^Processes all unprocessed templates from the database and inserts them into Qdrant collections)status_codesummarydescriptiondbc                 *    t        |       }i |ddiS )N)r   detailz5Templates processed and inserted into vector database)r   )r   results     H/var/www/html/hubwallet-dev/src/marketing/vector_db_collection/router.pybulk_insertr       s+    
 &,F
I     z/searchzPage number (starts from 1))r   ge
   zNumber of records per paged   )r   r"   lerequestpage	page_sizec           
         t        |       }t        |j                        }|dz
  |z  }||z   }|j                  || }g }|D ]  }	|j                  t	        |	j
                        |	j                  |	j                  t        |	j                  t              r|	j                  nt        j                  |	j                        d        t        d||||d      S )Nr   )template_idtemplate_nametemplate_urltemplate_metadataT)r   r'   r(   totaldata)content)r   lenresultsappendintr*   r+   r,   
isinstancer-   strjsondumpsr   )
r&   r'   r(   r   r.   startendpaginated_resultsr/   items
             r   searchr=   %   s    
 G$F EAX"E
)
CuS1D! 
t//0!// -- d44c: &&ZZ 6 67	
 		
 !  r!   z/collectionsc                      t               S N)r    r!   r   list_collectionsrA   K   s    #%%r!   z/collections/{name}/infonamec                     t        |       S r?   )r   rB   s    r   collection_inforE   R   s    "4((r!   z/collections/{name}c                     t        |       S r?   )r   rD   s    r   delete_collectionrG   V   s    $T**r!   z/collections/{name}/countc                     t        |       S r?   )r   rD   s    r   countrI   Z   s    %%r!   z/healthc                      t               S r?   )r   r@   r!   r   healthrK   ^   s    r!   )+fastapir   r   r   r   r   typingr   r7   src.utils.dbr	   sqlalchemy.ormr
   schemar   r   servicer   r   fastapi.responsesr   
controllerr   r   r   r   r   r   r   vector_db_routerpostHTTP_201_CREATEDr    r4   r=   getrA   r6   rE   deleterG   rI   rK   r@   r!   r   <module>rY      s   E E    " 2 "  *  o  o  o; 
 /"("9"9J #C  D &fo G 	D  y!a-JqQ"23OTUZ]^ M     " J n%& && 01)# ) 2) ./+C + 0+ 12& & 3& i  !r!   