o
    Dgp                     @   sL   d dl mZmZ d dlmZ d dlmZ d dlZedZ	G dd dZ
dS )    )ListOptional)Session)DeviceTokenN	adimsayarc                   @   s   e Zd Zedededee fddZededede	de	def
dd	Z
ededede	dee fd
dZededee fddZdS )DeviceTokenServicedbuser_idreturnc                 C   s&   |  ttj|ktjdk }|S )uH   사용자의 모든 활성화된 디바이스 토큰을 조회합니다.T)queryr   filterr	   	is_activeall)r   r	   tokens r   )/app/app/services/device_token_service.pyget_user_device_tokens	   s   
z)DeviceTokenService.get_user_device_tokensdevice_tokendevice_typec              
   C   s   zP| drd}| ttj|ktj|k }|r-|js*d|_|   | 	| |W S t|||dd}| 
| |   | 	| td| d|  |W S  tyg } ztdt|   d}~ww )	uX   사용자의 디바이스 토큰을 등록하거나 기존 토큰을 활성화합니다.zExponentPushToken[ZexpoT)r	   r   r   r   u.   새 디바이스 토큰 등록: 사용자 ID: u   , 디바이스 타입: u.   디바이스 토큰 등록 중 오류 발생: N)
startswithr   r   r   r	   r   firstr   commitrefreshaddloggerinfo	Exceptionerrorstr)r   r	   r   r   Zexisting_tokenZ	new_tokener   r   r   add_device_token   s>   




z#DeviceTokenService.add_device_tokenc                 C   sf   |  ttj|ktj|k }|std|  dS d|_| 	  | 
| td|  |S )u:   사용자의 디바이스 토큰을 비활성화합니다.u;   비활성화할 토큰을 찾을 수 없음: 사용자 ID: NFu0   디바이스 토큰 비활성화: 사용자 ID: )r   r   r   r	   r   r   r   warningr   r   r   r   )r   r	   r   tokenr   r   r   deactivate_device_token:   s   

z*DeviceTokenService.deactivate_device_tokenc                 C   s   |  ttjdk S )u;   모든 활성화된 디바이스 토큰을 조회합니다.T)r   r   r   r   r   )r   r   r   r   get_all_active_tokensL   s   z(DeviceTokenService.get_all_active_tokensN)__name__
__module____qualname__staticmethodr   intr   r   r   r   r    r   r#   r$   r   r   r   r   r      s     ' r   )typingr   r   sqlalchemy.ormr   Zapp.models.device_tokenr   logging	getLoggerr   r   r   r   r   r   <module>   s    
