o
    Q?hU                     @   s   d dl mZmZ d dlmZmZ d dlmZ d dlm	Z	m
Z
 d dlmZ eddG dd	 d	e	Zd
edefddZeG dd de	ZdS )    )	dataclassfield)SERVER_TIMESTAMPdb)Image)DocumentDatavalidate)VariantT)kw_onlyc                   @   s   e Zd ZU eed< eed< eed< eed< ee ed< ee ed< dZeed< d	Ze	e
B ed
< dZeed< edefddZedefddZdd Zdee fddZdS )Productname
platformIdplatformProductIdshopIdimagestags descriptionr   priceunMappedmappedc                 C   s:   t ddd| }t|dkr| |d  S d S )Nproductsr   z==r   )r   
collectionwheregetlen	from_dictto_dict)clsr   ref r    O/var/www/html/riverr-enterprise-integrations-main/V2/functions/Products/main.pygetByPlatformProductId   s   "zProduct.getByPlatformProductId	productIdc                 C   s6   t d|  }|jr| d|ji| S d S )N	products/id)r   documentr   existsr   r%   r   )r   r#   snapr    r    r!   r      s   "zProduct.getc                 C   sB   | j st| jt| j t| j | _ | jd d | _t|  d S )Nd   )r%   strr   r   r   r   r   )selfr    r    r!   __post_init__!   s   &zProduct.__post_init__variantsc                 K   s   t d| j }t  }|j|i |  |dd |d}| }|D ]}|jdd |D vr8||j	 q&|
  t  }|D ]}|j||j| dd qC|
  | jS )Nr$   T)merger-   c                 S   s   g | ]}|j qS r    )r%   ).0vr    r    r!   
<listcomp>-   s    z Product.save.<locals>.<listcomp>)r   r&   r%   batchsetr   r   r   delete	referencecommit)r+   r-   kwargsr   r2   variantsRefexistingVariantsvariantr    r    r!   save&   s   
 &	zProduct.saveN)__name__
__module____qualname__r*   __annotations__listr   r   r   intfloatr   classmethodr"   r   r,   r	   r;   r    r    r    r!   r      s    
 r   r   platformVariantIdc                 C   sB   t | }|rtd|j d|  }|jrt|	 S i S )Nr$   z
/variants/)
r   r"   r   r&   r%   r   r'   r	   r   r   )r   rD   productr:   r    r    r!   getByPlatformVariantId<   s   
rF   c                   @   s   e Zd ZU ee ed< ee ed< eedZee ed< dZeed< dZ	e
ed< d	Ze
ed
< dZedB ed< edefddZdS )ProductMappingblankProductIdsimageIds)default_factorymappedVariantsr   r   TprintOnDemandFignoredNdecorationTyper%   c                 C   s,   t d|  }|jr| | S d S )NzproductsMapping/)r   r&   r   r'   r   r   )r   r%   r   r    r    r!   r   N   s   zProductMapping.get)r<   r=   r>   r@   r*   r?   r   rK   r   rL   boolrM   rN   rC   r   r    r    r    r!   rG   D   s   
 rG   N)dataclassesr   r   configs.firebaser   r   V2.functions.Images.mainr   V2.functions.mainr   r   V2.functions.Products.Variantsr	   r   r*   rF   rG   r    r    r    r!   <module>   s   0