o
    lh                     @   s8  d Z ddlmZ ddlmZ ddlmZmZ ddlmZm	Z	m
Z
 G dd deeZG dd	 d	e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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!eZG d"d# d#eZd$S )%zZ
Pydantic schemas for request/response validation.
Defines data models for API endpoints.
    )datetime)Enum)ListOptional)	BaseModelEmailStrFieldc                   @      e Zd ZdZdZdZdZdS )UserTypezUser type enumeration.useradminpartnerN)__name__
__module____qualname____doc__USERADMINPARTNER r   r   
schemas.pyr
      
    r
   c                   @   r	   )RateTypezSubscription rate enumeration.freepremiumproN)r   r   r   r   FREEPREMIUMPROr   r   r   r   r      r   r   c                   @   sV   e Zd ZU dZedddddZeed< eddd	Ze	ed
< edddddZ
eed< dS )UserRegisterz!User registration request schema..   d   z	Full name
min_length
max_lengthdescriptionnameEmail addressr%   email      zPassword (min 6 chars)passwordN)r   r   r   r   r   r&   str__annotations__r)   r   r,   r   r   r   r   r      s
   
 r   c                   @   s:   e Zd ZU dZedddZeed< edddZe	ed< dS )		UserLoginzUser login request schema..r'   r(   r)   Passwordr,   N)
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ddZeed< eddddd	Zeed
< dS )PasswordChangezPassword change request schema..zCurrent passwordr(   current_passwordr*   r+   zNew passwordr"   new_passwordN)	r   r   r   r   r   r2   r-   r.   r3   r   r   r   r   r1   *   s   
 r1   c                   @   sp   e Zd ZU dZeed< eed< eed< eed< eed< dZe	e ed< dZ
e	e ed	< eed
< G dd dZdS )UserResponsezUser response schema.idr&   r)   
created_atrateNpaidnext_payment_date	user_typec                   @   s   e Zd ZdZdS )zUserResponse.ConfigTN)r   r   r   from_attributesr   r   r   r   Config<   s    r<   )r   r   r   r   intr.   r-   r   r8   r   r9   r<   r   r   r   r   r4   1   s   
 r4   c                   @   s6   e Zd ZU dZeed< dZeed< eed< eed< dS )TokenResponsez%Authentication token response schema.access_tokenbearer
token_type
expires_inr   N)	r   r   r   r   r-   r.   rA   r=   r4   r   r   r   r   r>   @   s   
 r>   c                   @   s&   e Zd ZU dZeed< dZeed< dS )MessageResponsez Generic message response schema.messageTsuccessN)r   r   r   r   r-   r.   rE   boolr   r   r   r   rC   H   s   
 rC   c                   @   s&   e Zd ZU dZee ed< eed< dS )UserListResponsezUser list response schema.userstotalN)r   r   r   r   r   r4   r.   r=   r   r   r   r   rG   N   s   
 rG   c                   @   s<   e Zd ZU dZeddddZee ed< dZ	ee
 ed< dS )
UserUpdatez#User profile update request schema.Nr    r!   r#   r$   r&   r)   )r   r   r   r   r   r&   r   r-   r.   r)   r   r   r   r   r   rJ   U   s   
 rJ   c                   @   s   e Zd ZU dZeddddZeed< edddZe	ed	< edd
ddZ
eed< ejZeed< ejZeed< dZee ed< dZee ed< dS )AdminUserCreatez#Admin user creation request schema..r    r!   rK   r&   r'   r(   r)   r*   r+   r,   r7   r:   Nr8   r9   )r   r   r   r   r   r&   r-   r.   r)   r   r,   r   r   r7   r
   r   r:   r8   r   r   r9   r   r   r   r   rL   \   s   
 rL   c                   @   s|   e Zd ZU dZeddddZee ed< dZ	ee
 ed< dZee ed< dZee ed	< dZee ed
< dZee ed< dS )AdminUserUpdatez!Admin user update request schema.Nr    r!   rK   r&   r)   r7   r:   r8   r9   )r   r   r   r   r   r&   r   r-   r.   r)   r   r7   r   r:   r
   r8   r   r9   r   r   r   r   rM   g   s   
 rM   c                   @   &   e Zd ZU dZedddZeed< dS )GoogleAuthRequestz+Google OAuth authentication request schema..zGoogle ID tokenr(   id_tokenN)r   r   r   r   r   rP   r-   r.   r   r   r   r   rO   r      
 rO   c                   @   rN   )GoogleAuthCodeRequestz/Google OAuth authorization code request schema..zAuthorization code from Googler(   codeN)r   r   r   r   r   rS   r-   r.   r   r   r   r   rR   w   rQ   rR   c                   @   rN   )GoogleOAuthUrlResponsez!Google OAuth URL response schema..zGoogle OAuth authorization URLr(   auth_urlN)r   r   r   r   r   rU   r-   r.   r   r   r   r   rT   |   rQ   rT   N)r   r   enumr   typingr   r   pydanticr   r   r   r-   r
   r   r   r/   r1   r4   r>   rC   rG   rJ   rL   rM   rO   rR   rT   r   r   r   r   <module>   s(    