
    ag                         d dl mZmZmZmZ d dlmZmZmZ d dl	Z	d dl
Z
d dlmZ d dlZ e
j        e          Z e            Ze                    d           ed          fdee         fd            ZdS )	    )	APIRouterFile
UploadFileHTTPException)text_processor
vectorizervector_storeN)Listz/upload.filesc                   K   	 | st          dd          g }d}t          j        0	 t          j        t          j                   n# t          $ r Y nw xY wdt          fdfd| D             }t          j	        |  d {V }t          d |D                       }dt          |            d	| d
|dS # t          $ rL}t                              dt          |                      t          dt          |                    d }~ww xY w)Ni  zNo files uploadedr   filec           	         K   	                                    d{V }t          j        |          }t          |t          t
          f          s j        dddS t          j        |          }|s j        dddS t          j
        |          }t          j                    } fd|D             }t          j        |||            j        dt          |          d	S # t          j        $ r  j        dd
dcY S t           $ rT}t"                              d j         dt'          |                       j        dt'          |          dcY d}~S d}~ww xY w)zProcesses a single fileNfailedzExpected JSON object or array)r   statuserrorskippedzNo valid text chunksc                 $    g | ]}|j         d S ))chunksource)filename).0r   r   s     6E:\project-album-python\Demo Project\Routers\upload.py
<listcomp>z;upload_image_data.<locals>.process_file.<locals>.<listcomp>/   s#    ZZZ%et}EEZZZ    success)r   r   chunks_processedzInvalid JSON formatzError processing file z: )readjsonloads
isinstancedictlistr   r   process_json_datar   create_embeddingsr	   get_next_file_idinsert_recordslenJSONDecodeError	Exceptionloggerr   str)r   contents	json_datachunks
embeddingsfile_idmetadataes   `       r   process_filez'upload_image_data.<locals>.process_file   s     T!%,,,,,, Jx00	 ")dD\:: q$(MXPoppp (9)DD i$(MYQghhh (9&AA
 '799ZZZZSYZZZ+J'JJJ $X[\bXcXcddd' c c c $Labbbbb T T TOdmOOs1vvOOPPP $CPQFFSSSSSSSSTs2   AC  C ;A"C E:	EA	EEEc                 &    g | ]} |          S  r5   )r   r   r3   s     r   r   z%upload_image_data.<locals>.<listcomp>;   s#     F F Fd!3!3 F F Fr   c              3   Z   K   | ]&}|d          dk    |                     dd          V  'dS )r   r   r   r   N)get)r   ress     r   	<genexpr>z$upload_image_data.<locals>.<genexpr>>   sC      kkcPST\P]ajPjPj377#5q99PjPjPjPjkkr   zSuccessfully processed z files with z total chunks)messageresultszUpload failed: i  )r   r	   indexcreate_indexr   	dimension
ValueErrorr   asynciogathersumr'   r)   r*   r   r+   )r   r;   total_chunksfile_processing_tasksr2   r3   s        @r   upload_image_datarE      sx     :) 	:%8999 %)**>????   	TZ 	T 	T 	T 	T@ !G F F F F F F(=>>>>>>>kkWkkkkk eUddddd
 
 	

  ) ) )/s1vv//000CQ((()s<   "B6 A B6 
AB6 AA!B6 6
D ADD)fastapir   r   r   r   Utils.dependenciesr   r   r	   r   loggingtypingr
   r@   	getLogger__name__r*   routerpostrE   r5   r   r   <module>rN      s    > > > > > > > > > > > > G G G G G G G G G G         		8	$	$	Y6:d3ii ;) ;)4
#3 ;) ;) ;) ;) ;) ;)r   