o
    UhL                     @   s   d dl m Z  d dlmZmZ d dlmZ d dlmZ d dlm	Z	m
Z
mZmZ d dlmZ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dS )    )datetime)LiteralOptional)HTTPException)Field)INTEGERVARCHARDateTimeEnum)MappedSessionmapped_column)Base)CustomModelc                   @   s   e Zd ZU dZeddZedB ed< eddZe	dB ed< eddZ
e	dB ed< eddZe	dB ed< eddZe	dB ed< ed	dZed
 ed< dS )UserBasetbl_userNdefaultuser_id
first_name	last_nameemail_idpasswordadmin)
superadminr   role)__name__
__module____qualname____tablename__r   r   int__annotations__r   strr   r   r   r   r    r#   r#   //var/www/html/RetailAPI/app/models/main/user.pyr   
   s   
 r   c                   @   s:   e Zd ZU eddZedB ed< eddZedB ed< dS )
UserFilterNr   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dedddZee e	d< ede
ddddZee e	d< ed	e
ddddZee e	d	< ed
e
ddddZee e	d
< ede
ddddZee e	d< ededddddddZee e	d< ee
ddddZeee  e	d< eeddZeee  e	d< edededd fddZedededd fddZededededd fddZedeeB dededB fd d!ZdS )"TblUserr   r   T)primary_keyautoincrementr      N)nullableserver_defaultr   r   r   r   r   r   
user_roles)nameF   otp)r*   
otp_expirydatadbreturnc                 C   s,   |  }| di |}|| |  |S )Nr#   )
model_dumpaddflush)clsr1   r2   	data_dictnew_datar#   r#   r$   create%   s
   
zTblUser.createc                 C   s.   | | | j|k }|stddd|S Ni  zUser not found)status_codedetail)queryfilterr   firstr   )r7   r   r2   get_datar#   r#   r$   
get_usr_id-   s   zTblUser.get_usr_idc                 C   sf   | | | j|k }|stddd| }| D ]
\}}t||| q|| |	  |S r;   )
r>   r?   r   r@   r   r4   itemssetattrr5   r6   )r7   r   r1   r2   rA   r8   keyvaluer#   r#   r$   update4   s   
zTblUser.updaterequestc                 C   sN   t |tr|}n|jdd}|| jdi | }|sd S tdi |jS )NT)exclude_noner#   )
isinstancedictr4   r>   	filter_byr@   r   __dict__)r7   rH   r2   filter_dataget_user_datar#   r#   r$   get_by_user_filter@   s   
zTblUser.get_by_user_filter) r   r   r   r   r   r   r   r   r    r!   r   r   r"   r   r   r   r
   r   r/   r   r	   r0   r   classmethodr   r   r:   rB   rG   rK   r%   rP   r#   r#   r#   r$   r&      s$   
     &"$r&   N)r   typingr   r   fastapir   pydanticr   
sqlalchemyr   r   r	   r
   sqlalchemy.ormr   r   r   app.models.mainr   app.utils.schemas_utilsr   r   r%   r&   r#   r#   r#   r$   <module>   s    
