
    ViX                        d dl mZmZ d dlmZmZmZmZ d dlm	Z	m
Z
mZmZmZ d dlmZ  edg          Ze                    de          d	efd
            Ze                    de          d	efd            Ze                    d          defd            Ze                    d          defd            Ze                    d          d	efd            ZdS )    )	APIRouterHTTPException)RegisterRequestLoginRequestAuthResponseProgressUpdateRequest)create_userauthenticate_userget_user_by_sessionget_study_progressupdate_study_progress)loggerAuthentication)tagsz	/register)response_modelrequestc                 2  K   | j         r| j        st          dd          t          | j                  dk     rt          dd          t	          | j         | j                  }t          |d         |d         |d         r| j         nd|d	         
          S )uh   
    새 유저를 등록합니다.
    - user_id: 로그인 아이디
    - password: 비밀번호
      0   아이디와 비밀번호를 입력해주세요.status_codedetail   u2   비밀번호는 4자리 이상이어야 합니다.success
session_idNmessager   r   user_idr   )r   passwordr   lenr	   r   r   results     /app/app/routers/auth_router.pyapi_registerr$      s       ? h'"2 h4fgggg
7q  4hiiii'*:;;Fy!,'#))#4>$y!	       z/loginc                    K   | j         r| j        st          dd          t          | j         | j                  }t	          |d         |d         |d         r| j         nd|d                   S )	un   
    유저 로그인을 수행합니다.
    - user_id: 로그인 아이디
    - password: 비밀번호
    r   r   r   r   r   Nr   r   )r   r   r   r
   r   r!   s     r#   	api_loginr'   6   s       ? h'"2 h4fggggw0@AAFy!,'#))#4>$y!	   r%   z/me/{session_id}r   c                 n   K   t          |           }|st          dd          d|d         |d         dS )u4   
    세션 ID가 유효한지 검증합니다.
      $   유효하지 않은 세션입니다.r   Tr   r   )validr   r   )r   r   )r   users     r#   api_check_sessionr-   L   sU      
 z**D \4Z[[[[ 	?<(  r%   z/progress/{session_id}c                    K   t          |           }|st          dd          t          |           }| |d         |dS )u.   유저의 학습 진행도를 조회합니다.r)   r*   r   r   )r   r   progress)r   r   r   )r   r,   r/   s      r#   api_get_progressr0   _   s[       z**D \4Z[[[[!*--H 	?  r%   z	/progressc                    K   g d}| j         |vrt          dd|           t          | j        | j        | j         | j                  }|d         st          d|d                   |S )	u*   학습 진행도를 업데이트합니다.)NOT_STARTEDIN_PROGRESS	COMPLETEDr   u-   유효하지 않은 상태입니다. 가능: r   )r   item_idstatusscorer   i  r   )r6   r   r   r   r5   r7   )r   valid_statusesr"   s      r#   api_update_progressr9   n   s       A@@N~^++S>SS
 
 
 	

 #%~m	  F ) GF94EFFFFMr%   N)fastapir   r   app.schemas.auth_schemar   r   r   r   app.models.auth_moduler	   r
   r   r   r   app.core.configr   routerpostr$   r'   getstrr-   r0   putr9    r%   r#   <module>rD      s  
 - , , , , , , ,                         # " " " " "	
	
 
 
 [66    760 Xl33\    43*      $ $%%s    &% K'<      r%   