o
    
4Æi”  ã                   @   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\pod\model\product.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< dZee ed< eed< eed< eed< eed	< e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categoryNameNÚsubCategoryr   ÚdescriptionZbadgeZ
badgeColorZimagesZdesignTemplateÚsizesZcolorsZvariantsZshippingRatesZ	sizeGuide)r
   r   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__;   s   
zProductDatabaseModel.__init__Úproduct_dataÚreturnc              
   C   s¨   |  dd¡ ¡ }| dd¡ ¡ }|stdƒ‚| j d|i¡r"tdƒ‚| j d|i¡r.tdƒ‚d|i}| |¡ z| j |¡}t|j	ƒW S  t
yS } zt
dƒ‚d }~ww )	Nr!   r   r"   ZERR_EMPTY_IDÚ	productIdZERR_DUPLICATE_IDZERR_DUPLICATE_TITLEZERR_DATABASE_SYSTEM)ÚpopÚstripÚgetÚ
ValueErrorr,   Úfind_oneÚupdateZ
insert_oner   Úinserted_idÚ	Exception)r-   r/   Zfrontend_idr"   Zordered_dataÚresultÚer   r   r   Úinsert_product@   s$   ÿ
€þz#ProductDatabaseModel.insert_productN)r
   r   r   r   r.   Údictr<   r   r   r   r   r&   :   s    r&   N)Úpydanticr   Útypingr   r   Zpymongor   Zpymongo.errorsr   r   r   r   r   r   r    r&   r   r   r   r   Ú<module>   s   