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mZmZ d dlmZ e Zejdeej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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d
efddZejdej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 dS )    )	APIRouterDependsHTTPExceptionstatus)Session)List)deps)AddressCreateAddressUpdateAddressResponse)address_service/)response_modelstatus_codeaddressdbc                 C   s   t || |jS )u   
    새 주소를 등록합니다.
    
    이 주소가 기본 주소로 설정되면 다른 모든 주소의 기본 주소 설정이 해제됩니다.
    )r   create_addressid)r   r   current_user r   +/app/app/api/v1/endpoints/user_addresses.pyr      s   r   )r   c                 C   s   t | |jS )uL   
    현재 로그인한 사용자의 모든 주소를 조회합니다.
    )r   get_user_addressesr   )r   r   r   r   r   get_addresses   s   r   z/{address_id}
address_idc                 C   &   t || |j}|sttjdd|S )u+   
    특정 주소를 조회합니다.
    Address not foundr   detail)r   get_addressr   r   r   HTTP_404_NOT_FOUNDr   r   r   r   r   r   r   r   "   s   	r   c                 C   s(   t || ||j}|sttjdd|S )u   
    주소를 수정합니다.
    이 주소가 기본 주소로 설정되면 다른 모든 주소의 기본 주소 설정이 해제됩니다.
    r   r   )r   update_addressr   r   r   r   )r   r   r   r   Zupdated_addressr   r   r   r!   3   s   r!   )r   c                 C   s&   t || |j}|sttjdddS )u   
    주소를 삭제합니다.    
    삭제되는 주소가 기본 주소였다면, 다른 주소가 기본 주소로 자동 설정됩니다.
    r   r   N)r   delete_addressr   r   r   r   )r   r   r   deletedr   r   r   r"   F      
r"   z/{address_id}/defaultc                 C   r   )u   
    특정 주소를 기본 주소로 설정합니다.
    이전에 기본 주소로 설정된 다른 모든 주소의 기본 주소 설정이 해제됩니다.
    r   r   )r   set_default_addressr   r   r   r   r    r   r   r   r%   X   r$   r%   N)!fastapir   r   r   r   sqlalchemy.ormr   typingr   Zapp.apir   app.schemas.user_addressr	   r
   r   app.servicesr   routerpostHTTP_201_CREATEDget_dbget_current_userr   getr   intr   putr!   deleteHTTP_204_NO_CONTENTr"   r%   r   r   r   r   <module>   sn    	