o
    @Tj                     @   s~  d dl Z d dlmZ d dlmZ d dlmZ d dlmZ G dd de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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 d*lmZmZ G d+d, d,eZdS )-    N)datetime)Enum)	BaseModel)
ImageModelc                   @   s   e Zd ZdZdZdZdZdS )
FaceStatusknownunknownnot_detectednot_usedN)__name__
__module____qualname__r   r   r	   r
    r   r   3/home/ubuntu/htdocs/ootd-api/app/schemas/garment.pyr   
   s
    r   c                   @   s|   e Zd ZU dZdZejdB ed< eed< dZ	edB ed< dZ
edB ed< dZedB ed< dZedB ed< dZedB ed	< dS )
GarmentAnalysisItemz$One garment detected from the image.Nidcategory_maincategory_subdescriptiontagssource_image_urlghost_image_url)r   r   r   __doc__r   uuidUUID__annotations__strr   r   r   dictr   r   r   r   r   r   r      s   
 r   c                   @   s\   e Zd ZU dZejed< dZedB ed< e	ed< dZ
eed< dZedB ed< ee ed	< dS )
GarmentAnalyzeResponsez,Unified response for POST /garments/analyze.user_idN	user_nameface_statusTsavedsource_image_pathgarments)r   r   r   r   r   r   r   r    r   r   r"   boolr#   listr   r   r   r   r   r      s   
 
r   c                   @   s"   e Zd ZU dZeed< eed< dS )StyleCategoryScoreResponsez.Score and comment for a single style category.scorecommentN)r   r   r   r   intr   r   r   r   r   r   r'   ,   s   
 r'   c                   @   sF   e Zd ZU dZeed< eed< eed< eed< eed< ee ed< dS )	StyleAnalyzeResponsez*Response for POST /garments/style-analyze.color_palette
silhouettedetailoverall_scoreoverall_comment
style_tagsN)	r   r   r   r   r'   r   floatr   r&   r   r   r   r   r+   3   s   
 r+   c                   @   s:   e Zd ZU dZeed< eed< eed< eed< eed< dS )StyleAnalyzeTempResponsez/Response for POST /garments/style-analyze-temp.time_contextoccasion_contextweather_contextcolor_harmonyimprovement_tipsN)r   r   r   r   r   r   r   r   r   r   r3   >   s   
 r3   c                   @   s    e Zd ZU ejed< eed< dS )GhostGenerateResponser   r   N)r   r   r   r   r   r   r   r   r   r   r   r9   H   s   
 
r9   c                   @   sZ   e Zd ZU dZeed< dZedB ed< dZedB ed< dZe	dB ed< dZ
edB ed< dS )GarmentSaveItemz0One garment to save (from analyze_only results).r   Nr   r   r   ghost_image_path)r   r   r   r   r   r   r   r   r   r   r;   r   r   r   r   r:   O   s   
 r:   c                   @   s8   e Zd ZU dZdZejdB ed< eed< e	e
 ed< dS )GarmentSaveRequestz(Request to save analyzed garments to DB.Nr   r#   r$   )r   r   r   r   r   r   r   r   r   r&   r:   r   r   r   r   r<   Y   s
   
 r<   c                   @   s(   e Zd ZU dZejed< ee ed< dS )GarmentSaveResponsez%Response after saving garments to DB.r   r$   N)	r   r   r   r   r   r   r   r&   r   r   r   r   r   r=   a   s   
 
r=   c                   @   st   e Zd ZU dZeed< dZejdB ed< eed< dZ	edB ed< dZ
edB ed< dZedB ed< dZedB ed	< dS )
GhostPreviewRequestz4Request ghost mannequin preview without a DB record.r#   Nr   r   r   r   r   image_model)r   r   r   r   r   r   r   r   r   r   r   r   r   r?   r   r   r   r   r   r>   j   s   
 r>   c                   @   s   e Zd ZU eed< eed< dS )GhostPreviewResponser   r;   N)r   r   r   r   r   r   r   r   r   r@   v   s   
 r@   c                   @   s   e Zd ZU ejed< ejed< dZedB ed< eed< dZedB ed< dZ	edB ed< dZ
edB ed< dZedB ed	< dZedB ed
< dZedB ed< dZedB ed< eed< eed< dS )GarmentDetailr   r   Nr    r   r   r   r   r#   r   r;   r   
created_at
updated_at)r   r   r   r   r   r   r    r   r   r   r   r   r#   r   r;   r   r   r   r   r   r   rA   }   s   
 

rA   c                   @   s   e Zd ZU ejed< dS )GarmentUpdateRequestr   N)r   r   r   r   r   r   r   r   r   r   rD      s   
 rD   c                   @   s2   e Zd ZU ejed< ejed< dZedB ed< dS )GarmentUpdateResponser   r   Nr    )r   r   r   r   r   r   r    r   r   r   r   r   rE      s   
 

rE   c                   @   s&   e Zd ZU eej ed< ejed< dS )GarmentBulkUpdateRequestgarment_idsr   N)r   r   r   r&   r   r   r   r   r   r   r   rF      s   
 rF   c                   @   s0   e Zd ZU eed< ejed< dZedB ed< dS )GarmentBulkUpdateResponseupdated_countr   Nr    )	r   r   r   r*   r   r   r   r    r   r   r   r   r   rH      s   
 
rH   c                   @   s$   e Zd ZU dZeed< ejed< dS )GarmentDeleteResponseTdeletedr   N)r   r   r   rK   r%   r   r   r   r   r   r   r   rJ      s   
 rJ   )GarmentBriefPageMetac                   @   s"   e Zd ZU ee ed< eed< dS )GarmentListResponseitemsmetaN)r   r   r   r&   rL   r   rM   r   r   r   r   rN      s   
 rN   )r   r   enumr   pydanticr   app.schemas.commonr   r   r   r   r   r'   r+   r3   r9   r:   r<   r=   r>   r@   rA   rD   rE   rF   rH   rJ   rL   rM   rN   r   r   r   r   <module>   s2    	

	