U
    	mh{                     @   s   d dl mZmZ d dlmZmZmZmZ d dlmZ d dl	Z	G dd deZ
G dd deZG d	d
 d
eZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd  d eZdS )!    )	BaseModelField)ListDictOptionalLiteral)datetimeNc                   @   s   e Zd ZU edd dZeed< eed< dZee ed< dZ	e
ed	< d
Ze
ed< dZe
ed< dZeed< dZee ed< dZee ed< eejdZeed< dS )SearchRequestc                   C   s   t t S NstruuidZuuid4 r   r   shared/models/schemas.py<lambda>       zSearchRequest.<lambda>default_factory
request_idqueryNsearch_engine
   max_results   delay   timeoutTheadlessuser_id
session_id	timestamp)__name__
__module____qualname__r   r   r   __annotations__r   r   r   intr   r   r   boolr   r   r   nowr    r   r   r   r   r	      s   
r	   c                   @   sb   e Zd ZU eed< eed< dZeed< dZeed< dZeed< d	Z	e
ed
< eejdZeed< dS )SearchEngineRequestr   r   r   r   r   r   r   r   Tr   r   r    N)r!   r"   r#   r   r$   r   r%   r   r   r   r&   r   r   r'   r    r   r   r   r   r(      s   
r(   c                   @   s^   e Zd ZU dZee ed< dZee ed< dZee ed< dZ	ee ed< dZ
ee ed< dS )SearchResultNtitleurlsnippetdisplayed_urlrank)r!   r"   r#   r*   r   r   r$   r+   r,   r-   r.   r%   r   r   r   r   r)      s
   
r)   c                   @   sn   e Zd ZU eed< eed< eed< ee ed< eed< ee	j
dZe	ed< dZee ed	< dZee ed
< dS )SearchResponser   r   r   ZresultsZtotal_resultsr   r    Nerrorprocessing_time)r!   r"   r#   r   r$   r   r)   r%   r   r   r'   r    r0   r   r1   floatr   r   r   r   r/   "   s   
r/   c                   @   s>   e Zd ZU eed< eed< dZeed< eej	dZ
eed< dS )MetadataRequestr   r+   r   r   r   r    N)r!   r"   r#   r   r$   r   r%   r   r   r'   r    r   r   r   r   r3   ,   s   
r3   c                   @   sV  e Zd ZU eed< dZee ed< dZee ed< dZee ed< dZ	ee ed< dZ
ee ed< dZee ed< dZee ed	< dZee ed
< dZee ed< dZee ed< dZee ed< dZee ed< dZee ed< dZee ed< dZee ed< dZee ed< g Zee ed< g Zee ed< g Zee ed< dZee ed< dS )PageMetadatar+   Nr*   descriptionkeywordsauthorpublish_datelast_modifiedcanonical_urllanguage	page_size	load_timestatus_codecontent_type
word_countimages_countlinks_countexternal_links_countsocial_media_linksemail_addressesphone_numbersr0   )r!   r"   r#   r   r$   r*   r   r5   r6   r7   r8   r9   r:   r;   r<   r%   r=   r2   r>   r?   r@   rA   rB   rC   rD   r   rE   rF   r0   r   r   r   r   r4   2   s*   
r4   c                   @   sB   e Zd ZU eed< eed< eejdZ	eed< dZ
ee ed< dS )MetadataResponser   Zmetadatar   r    Nr1   )r!   r"   r#   r   r$   r4   r   r   r'   r    r1   r   r2   r   r   r   r   rG   I   s   
rG   c                   @   sR   e Zd ZU eed< eed< dZed ed< dZe	e ed< e
ejdZeed	< dS )
ExportRequestr   datajsonrJ   ZcsvZbothformatNfilenamer   r    )r!   r"   r#   r   r$   r   rL   r   rM   r   r   r   r'   r    r   r   r   r   rH   O   s
   
rH   c                   @   sF   e Zd ZU eed< ee ed< eejdZ	eed< dZ
ee ed< dS )ExportResponser   filesr   r    Nr0   )r!   r"   r#   r   r$   r   r   r   r'   r    r0   r   r   r   r   r   rN   V   s   
rN   c                   @   s   e Zd ZU edd dZeed< ee ed< dgZee ed< dZ	e
ed	< d
Ze
ed< dZed ed< dZee ed< dZee ed< eejdZeed< dS )BatchSearchRequestc                   C   s   t t S r
   r   r   r   r   r   r   ]   r   zBatchSearchRequest.<lambda>r   r   ZqueriesZgooglesearch_enginesr   r   r   r   rJ   rK   export_formatNr   r   r    )r!   r"   r#   r   r   r   r$   r   rQ   r   r%   r   rR   r   r   r   r   r   r'   r    r   r   r   r   rP   \   s   
rP   c                   @   sb   e Zd ZU eed< ed ed< dZeed< dZe	e ed< g Z
ee ed< eejd	Zeed
< dS )ProcessingStatusr   )pendingZ
processingZ	completedZfailedstatusg        progressNmessageresult_filesr   r    )r!   r"   r#   r   r$   r   rV   r2   rW   r   rX   r   r   r   r'   r    r   r   r   r   rS   g   s   
rS   c                   @   sF   e Zd ZU eed< ed ed< eejdZ	eed< dZ
ee ed< dS )HealthStatusZservice_name)ZhealthyZ	unhealthyZdegradedrU   r   r    Ndetails)r!   r"   r#   r   r$   r   r   r   r'   r    rZ   r   r   r   r   r   r   rY   o   s   
rY   c                   @   s>   e Zd ZU eed< eed< eed< eed< eed< eed< dS )
SystemInfosystemreleaseversionmachineZ	processorZpython_versionN)r!   r"   r#   r   r$   r   r   r   r   r[   u   s   
r[   c                   @   sJ   e Zd ZU eed< dZee ed< eej	dZ
eed< dZee ed< dS )ErrorResponser0   NrZ   r   r    r   )r!   r"   r#   r   r$   rZ   r   r   r   r'   r    r   r   r   r   r   r`   }   s   
r`   )Zpydanticr   r   typingr   r   r   r   r   r   r	   r(   r)   r/   r3   r4   rG   rH   rN   rP   rS   rY   r[   r`   r   r   r   r   <module>   s"   	
