
    Eh                         d Z ddlmZ ddlmZmZmZmZ ddlmZ de	dee	ef         fdZ
de	defdZde	deee	ef                  fd	Zd
 Zedk    r e             dS dS )zb
User document management utilities
Handles checking and retrieving user documents from Firestore
    )db)DictAnyOptionalList)datetime
user_emailreturnc                 L   	 t          j        |                               d                                          }|j        r2|                                }|rt          |          nd}|dk    ||ddS ddi ddS # t          $ r}ddi t          |          dcY d}~S d}~ww xY w)z
    Check if a user has any documents in their collection
    
    Args:
        user_email: The email of the user to check
        
    Returns:
        Dictionary containing document information
    	Documentsr   N)has_documentsdocument_count	documentserrorF)	r   
collectiondocumentgetexiststo_dictlen	Exceptionstr)r	   	user_docs	docs_dictr   es        L/Users/yp/Desktop/SRS/askmed.ai/askmedaiapp/data/databases/user_documents.pycheck_user_documentsr   
   s    
M*--66{CCGGII	 	!))++I/8?S^^^aN "0!!3"0&	   "'"#	    
 
 
"VV	
 
 	
 	
 	
 	
 	
 	

s$   A1A; 4A; ;
B#BB#B#c                     	 t          j        |                               d                                          }|j        r+|                                }|rt          |          dk    ndS dS # t          $ r Y dS w xY w)z.Simple boolean check if user has any documentsr   r   F)r   r   r   r   r   r   r   r   )r	   r   r   s      r   user_has_documentsr   1   s    M*--66{CCGGII	 	>!))++I)2=3y>>A%%=u   uus   A*A/ /
A=<A=c           
      D   t          |           }|d         sg S g }|d                                         D ]X\  }}|                    ||                    dd          |                    dt	          j                              |d           Yt          |d d	          S )
z$Get formatted list of user documentsr   r   filenameUnknown	load_date)idr!   upload_datemetadatac                     | d         S )Nr%    )xs    r   <lambda>z(get_user_document_list.<locals>.<lambda>L   s    1]+;     T)keyreverse)r   itemsappendr   r   nowsorted)r	   resultr   doc_iddoc_infos        r   get_user_document_listr5   <   s    !*--F/" 	I";/5577   Z;;#<<X\^^DD 	
 
 	 	 	 	 )!;!;TJJJJr+   c            
         d} t          |           }t          d|             t          d           |d         rt          d|d                     |S |d         rt          d|d          d	           |d
                                         D ]J\  }}|                    dd          }|                    dd          }t          d| d| d| d           Knt          d           |S )z*Check documents for kmyers@atomohealth.comzkmyers@atomohealth.comzChecking documents for: z2--------------------------------------------------r   u   ❌ Error: r   u   ✅ User has r   z document(s)r   r!   r"   r#   z  - z: z (uploaded: )u   ❌ User has no documents)r   printr.   r   )r	   r2   r3   r4   r!   r#   s         r   check_kmyers_documentsr9   O   s%   )J!*--F	
1Z
1
1222	(OOOg -F7O--...o +Df%56DDDEEE &{ 3 9 9 ; ; 	G 	GFH||J	::H [)<<IEEE8EEEEEFFFF	G
 	)***Mr+   __main__N)__doc__data.databases.firebaser   typingr   r   r   r   r   r   r   boolr   r5   r9   __name__r(   r+   r   <module>r@      s   
 ' & & & & & , , , , , , , , , , , ,      %
S %
T#s(^ %
 %
 %
 %
N	3 	4 	 	 	 	Ks KtDcN/C K K K K&  . z r+   