
     #i                        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 d dl mZ  G d de      Z G d d	e      Z G d
 de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d  d!e      Z G d" d#e      Z G d$ d%e      Zy&)'    )	BaseModelEmailStrField	validator)AnyOptionalListHTTPException)datetime)field_serializerc                   "    e Zd ZU eed<   eed<   y)Tokenaccess_token
token_typeN__name__
__module____qualname__str__annotations__     1/var/www/html/content_weaver/db_config/schemas.pyr   r      s    Or   r   c                       e Zd ZU eed<   y)	TokenDataemailN)r   r   r   r   r   r   r   r   r   r      s    Or   r   c                      e Zd ZU eed<   eed<   eed<   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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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Zee   ed<   dZee   ed<   dZee   ed<   eed<    G d d      Zy)CoursesResponse	course_idtopicr   statusNcourse_imscc_urltask_idskillsdegreeallocated_timecontent_descriptioncontent_outcomeslanguagemode_of_deliveryNtoneno_of_modulestaxonomyoutlinelearning_approachlevel_of_difficultytype_of_assessmentno_of_questionsweblinksmarkdown_contentmarkdown_url
created_atc                       e Zd ZdZed iZy)CoursesResponse.ConfigTc                 "    | j                         S r,   )	isoformatvs    r   <lambda>zCoursesResponse.Config.<lambda>-   s     r   N)r   r   r   from_attributesr   json_encodersr   r   r   Configr:   *   s    -
r   rB   )r   r   r   r   r   r#   r   r$   r%   r&   r'   r(   r)   r*   r+   r-   r.   intr/   r0   r1   r2   r3   r4   r5   r6   r7   r   rB   r   r   r   r   r      sF   NJJK&*hsm*!GXc]! FHSM  FHSM $(NHSM()-#-&*hsm*"Hhsm"&*hsm*D(3-#'M8C='"Hhsm"!GXc]!'+x}+)-#-(,,%)OXc])"Hhsm"&*hsm*"&L(3-&
 
r   r   c                   @   e Zd ZU  eddd      Z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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Zee   ed<   dZee   ed<   dZeed<   y)CoursesCreate.   d   
min_length
max_lengthr!   Nr   user_idr%   r&   r'   r*   r+   r-   r.   r/   r1   r0   r5   pendingr"   )r   r   r   r   r!   r   r   r   r   rK   r%   r&   r'   r*   r+   r-   r.   rC   r/   r1   r0   r5   r"   r   r   r   rE   rE   0   s    sqS9E39E8C=!GXc]! FHSM  FHSM $(NHSM("Hhsm"&*hsm*D(3-#'M8C='"Hhsm"'+x}+!GXc]!"Hhsm"FCr   rE   c                       e Zd ZU 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Zee   ed<   dZee   ed	<   dZee   ed
<   dZee   ed<   y)CoursesUpdateNr(   r)   r/   r2   r3   r4   r.   r0   r1      course_step)r   r   r   r(   r   r   r   r)   r/   r2   r3   r4   rC   r.   r0   r1   rP   r   r   r   rN   rN   A   s    )-#-&*hsm*"Hhsm")-#-(,,%)OXc])#'M8C='!GXc]!'+x}+!"K#"r   rN   c                   \    e Zd ZU eed<   dZee   ed<   dZee   ed<    ed      d        Z	y)CourseAISchema
field_typeNr/   field_valuec                 8    g d}||vrt        dd| d      |S )N)r(   r)   r/   i  z%Invalid content type. Must be one of .)status_codedetailr
   )clsr>   valid_typess      r   validate_field_typez"CourseAISchema.validate_field_typeR   s6    
 K>{m1M  r   )
r   r   r   r   r   r/   r   rT   r   r[   r   r   r   rR   rR   M   s:    O"Hhsm"!%K#%|	 	r   rR   c                       e Zd ZU eed<    eddd      Z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<   y)CourseModuleCreater    .rF   rG   rH   module_titleNmodule_subtopicestimated_time
assessmentrecommended_resoursesr%   )r   r   r   r   r   r   r^   r_   r   r`   ra   rb   r%   r   r   r   r]   r]   ^   sa    NcaC@L#@%)OXc])$(NHSM( $J$+/8C=/ FHSM r   r]   c                       e Zd ZU eed<   y)RoleBasenameNr   r   r   r   rd   rd   g   s    
Ir   rd   c                       e Zd Zy)
RoleCreateNr   r   r   r   r   r   rg   rg   j       r   rg   c                   ,    e Zd ZU eed<    G d d      Zy)RoleOutidc                       e Zd ZdZy)RoleOut.ConfigTNr   r   r   r@   r   r   r   rB   rn   o       r   rB   N)r   r   r   rC   r   rB   r   r   r   rk   rk   m   s    G r   rk   c                   Z   e Zd ZU eed<   eed<   eed<   dZee   ed<   dZ	e
ed<   dZe
ed	<   dZ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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Zee   ed<   y)
UserCreatere   r   passwordNrole_idT	is_activeFis_email_verifiedis_phone_verifiedphone_numberprofile_pictureactivation_dateeducational_degree
departmentsubscription_packagesubscription_start_datesubscription_end_datesubscription_statussubscription_renewal_dater8   
updated_at)r   r   r   r   r   r   rt   r   rC   ru   boolrv   rw   rx   ry   rz   r   r{   r|   r}   r~   r   r   r   r8   r   r   r   r   rr   rr   r   s    
IOM!GXc]!It#t##t#"&L(3-&%)OXc])*.OXh'.(,, $J$*.(3-.26Xh/6048H-4)-#-48x18%)J")%)J")r   rr   c                   b   e Zd ZU eed<   eed<   eed<   eed<   eed<   e	dz  ed<   e	dz  ed<   d	Z
eed
<   d	Zeed<   dZeed<   dZee   ed<   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Zee   ed<   dZee	   ed<   e	ed<   e	ed<    G d d      Zy)UserResponserl   re   r   ru   roleNrz   
last_loginFrv   rw   rx   ry   rt   r{   r|   r}   r~   r   r   r   r8   r   c            
       P    e Zd ZdZed iZdZ eddddddd	d
      defd       Z	y)UserResponse.ConfigTc                 F    t        | t              r| j                         S | S r,   )
isinstancer   r<   r=   s    r   r?   zUserResponse.Config.<lambda>   s    Jq(,C1;;=  r   rz   r   r~   r   r   r8   r   json)	when_usedvaluec                 <    |rt        |j                               S d S r,   )rC   	timestamp)rY   r   s     r   serialize_datetimez&UserResponse.Config.serialize_datetime   s    -23u()<<r   N)
r   r   r   r@   rC   rA   str_strip_whitespacer   r   r   r   r   r   rB   r      sc    J
  $	+\;TVm  pK  MY  [g  sy  
z	=8 	= 
z	=r   rB   )r   r   r   rC   r   r   r   r   rk   r   rv   rw   rx   ry   r   r{   r|   r}   r~   r   r   r   rB   r   r   r   r   r      s    G
IOO
M_$4#t##t#L#%)OXc])c](,, $J$*.(3-.26Xh/6048H-4)-#-48x18	= 	=r   r   c                   "    e Zd ZU eed<   eed<   y)UserCourseLogBaserK   number_of_courseNr   r   r   rC   r   r   r   r   r   r      s    Lr   r   c                       e Zd Zy)UserCourseLogCreateNrh   r   r   r   r   r      ri   r   r   c                       e Zd ZU eed<   y)UserCourseLogUpdater   Nr   r   r   r   r   r      s    r   r   c                   @    e Zd ZU eed<   eed<   eed<    G d d      Zy)UserCourseLogResponserl   r8   r   c                       e Zd ZdZy)UserCourseLogResponse.ConfigTNro   r   r   r   rB   r      rp   r   rB   N)r   r   r   rC   r   r   rB   r   r   r   r   r      s    G r   r   N)pydanticr   r   r   r   typingr   r   r	   fastapir   r   r   r   r   r   rE   rN   rR   r]   rd   rg   rk   rr   r   r   r   r   r   r   r   r   <module>r      s    : : & & !  %I 	 
i 
BI "
#I 
#Y "! !y 	 	h 
* **!=9 !=H	 
	+ 	) - r   