
    b6i:                     v    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	  G d de
e      Z G d d	ed
      Zy)    )Optional)SQLModelField)datetime)Enum)field_validatorc                       e Zd ZdZdZdZy)Role
SUPERADMINADMINUSERSN)__name__
__module____qualname__r   r   r        A/var/www/html/story-book/Story-Book-python-api/app/models/user.pyr
   r
      s    JEEr   r
   c                      e Zd ZU  edd      Zee   ed<    edd      Zee	   ed<    edd      Z
ee	   ed<    eddd	
      Ze	ed<    ed	      Ze	ed<   dZee	   ed<    eej                        Zeed<    ed      Zeed<    ed	      Zeed<   dZee	   ed<   dZee	   ed<    eej.                        Zeed<    eej.                  dej.                  i      Zeed<    edd      ede	de	fd              Z edd      edee	   dee	   fd               Z edd      edee	   dee	   fd!              Z edd      edee	   dee	   fd"              Zy)#UserNT)defaultprimary_keyidd   )r   
max_length
first_name	last_nameF)uniqueindexnullableemail)r   hashed_passwordphone)r   role	is_active
is_deletedrefresh_tokenprofile_image)default_factory
created_atonupdate)r(   sa_column_kwargs
updated_atbefore)modevaluereturnc                 F    ||S |j                         j                         S N)striplower)clsr/   s     r   normalize_emailzUser.normalize_email   s#     =L{{}""$$r   vc                 F    |s|S |j                         j                         S r2   r3   
capitalizer5   r7   s     r   normalize_first_namezUser.normalize_first_name$   s!     Hwwy##%%r   c                 F    |s|S |j                         j                         S r2   r9   r;   s     r   normalize_last_namezUser.normalize_last_name-   s!     Hwwy##%%r   c                 h    |s|S dj                  t        t        j                  |            }|r|S d S )N )joinfilterstrisdigit)r5   r7   digitss      r   normalize_phonezUser.normalize_phone5   s2     HQ/0v)T)r   ) r   r   r   r   r   r   int__annotations__r   rC   r   r    r!   r"   r
   r   r#   r$   boolr%   r&   r'   r   utcnowr)   r,   r   classmethodr6   r<   r>   rF   r   r   r   r   r      s   d=B= %ds CJC$TcBIx}Bd$?E3? %0OS0E8C=tzz*D$*D)It)U+J+#'M8C='#'M8C=' AJA T^`h`o`oSpqJq W8,%C %C %  -% \1&Xc] &x} &  2& [x0&HSM &hsm &  1& W8,* *(3- *  -*r   r   T)tableN)typingr   sqlmodelr   r   r   enumr   pydanticr   rC   r
   r   r   r   r   <module>rQ      s0     $   $3 
0*84 0*r   