o
    g	                     @   s$  d dl mZmZmZmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZ d dlmZ e ZG dd	 d	e
ZG d
d de
ZejdedeejeejfdedefddZejdedeejeejfdedefddZejdee deejeejfdefddZdS )    )	APIRouterDependsHTTPExceptionstatus)Session)List)	BaseModel)deps)DeviceTokenCreateDeviceTokenResponse)DeviceTokenServicec                   @   s   e Zd ZU eed< eed< dS )RegisterDeviceTokenRequestdevice_tokendevice_typeN__name__
__module____qualname__str__annotations__ r   r   */app/app/api/v1/endpoints/device_tokens.pyr      s   
 r   c                   @   s   e Zd ZU eed< dS )DeactivateDeviceTokenRequestr   Nr   r   r   r   r   r      s   
 r   z	/register)response_modelreqdbc                 C   s"   t j||j| j| jd}t|S )u   
    사용자 디바이스 토큰을 등록합니다. 
    이미 등록된 토큰이라면 활성 상태로 업데이트합니다.
    )r   user_idr   r   )r   add_device_tokenidr   r   r   from_ormr   r   current_userr   r   r   r   register_device_token   s   

r"   z/deactivatec                 C   s0   t j||j| jd}|sttjddt|S )un   
    사용자 디바이스 토큰을 비활성화합니다.
    로그아웃 시 호출해야 합니다.
    )r   r   r   z-Device token not found or already deactivated)status_codedetail)	r   deactivate_device_tokenr   r   r   r   HTTP_404_NOT_FOUNDr   r   r    r   r   r   r%   &   s   

r%   /c                 C   s   t | |j}dd |D S )uE   
    사용자의 모든 디바이스 토큰을 조회합니다.
    c                 S   s   g | ]}t |qS r   )r   r   ).0tokenr   r   r   
<listcomp>G   s    z*get_user_device_tokens.<locals>.<listcomp>)r   get_user_device_tokensr   )r   r!   tokensr   r   r   r+   >   s   r+   N)fastapir   r   r   r   sqlalchemy.ormr   typingr   pydanticr   Zapp.apir	   Zapp.schemas.device_tokenr
   r   !app.services.device_token_servicer   routerr   r   postget_dbget_current_userr"   r%   getr+   r   r   r   r   <module>   s@   