o
    viI                     @   s   d dl mZ d dlmZmZ d dlmZ d dlm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ZdS )    )	BaseModel)ListOptional)MongoClient)DuplicateKeyErrorc                   @   s&   e Zd ZU eed< eed< eed< dS )DesignTemplatewidthheightZdpiN)__name__
__module____qualname__float__annotations__int r   r   C:\quy\Job\Quy\Model\Catalog.pyr      s   
 r   c                   @   s   e Zd ZU eed< eed< dS )ColornamehexN)r
   r   r   strr   r   r   r   r   r         
 r   c                   @   s   e Zd ZU eed< eed< dS )VariantsizepriceNr
   r   r   r   r   r   r   r   r   r   r      r   r   c                   @   sF   e Zd ZU eed< eed< eed< dZee ed< dZee ed< dS )	ShippingRateZregionZtransitTimeZcostg        	importTax importTaxNoteN)	r
   r   r   r   r   r   r   r   r   r   r   r   r   r      s   
 r   c                   @   s6   e Zd ZU eed< eed< eed< eed< eed< dS )	SizeGuider   Z
lengthInchZ	widthInchZlengthCmZwidthCmNr   r   r   r   r   r      s   
 r   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< eed< eed< g Zee ed	< ee	 ed
< ee
 ed< ee ed< ee ed< dS )ProductPayloadidtitleZ
categoryIdr   descriptionZbadgeZ
badgeColorZdesignTemplatesizesZcolorsZvariantsZshippingRatesZ	sizeGuideN)r
   r   r   r   r   r   r   r$   r   r   r   r   r   r   r   r   r   r    &   s   
 r    c                   @   s4   e Zd ZdededefddZdedefdd	Zd
S )ProductDatabaseModeldb_uridb_namecollection_namec                 C   s&   t || _| j| | _| j| | _d S )N)r   clientdb
collection)selfr&   r'   r(   r   r   r   __init__9   s   
zProductDatabaseModel.__init__product_datareturnc              
   C   s|   d|v r| d|d< z| j|}t|jW S  ty)   td|d d ty= } z	tdt| d }~ww )Nr!   _idu   Sản phẩm với ID u    đã tồn tại.u   Lỗi Database: )	popr+   Z
insert_oner   inserted_idr   
ValueErrorget	Exception)r,   r.   resulter   r   r   insert_product>   s   z#ProductDatabaseModel.insert_productN)r
   r   r   r   r-   dictr8   r   r   r   r   r%   8   s    r%   N)pydanticr   typingr   r   Zpymongor   Zpymongo.errorsr   r   r   r   r   r   r    r%   r   r   r   r   <module>   s   