o
    w׽g
                  
   @   s   d dl mZ d dlmZ d dlmZ d dlmZ dedededed	ef
d
dZ	deded	efddZ
dededed	efddZdeded	efddZdS )    )Session)ShoppingCart)CartItem)HTTPExceptiondbuser_id
product_idquantityreturnc                 C   s   |  ttj|k }|s"t|d}| | |   | | |  ttj	|j
ktj|k }|rH| j|7  _|   | | |S t|j
||d}| | |   | | |S )N)r   )cart_idr   r	   )queryr   filterr   firstaddcommitrefreshr   r   idr   r	   )r   r   r   r	   cart	cart_item r   */app/app/services/shopping_cart_service.pyadd_item_to_cart   s,   







r   c                 C   s   |  ttj|k S )N)r   r   r   r   r   )r   r   r   r   r   get_user_cart!   s   r   c                 C   st   |  ttj|k }|stddd|  ttj|jktj	|k }|s/tddd| 
| |   |S )N  Shopping cart not foundstatus_codedetailzCart item not found)r   r   r   r   r   r   r   r   r   r   deleter   )r   r   r   r   r   r   r   r   remove_item_from_cart$   s   


r   c                 C   sR   |  ttj|k }|stddd|  ttj|jk	  | 
  dS )u  
    사용자의 쇼핑 카트에서 모든 아이템을 제거합니다.
    
    Args:
        db: 데이터베이스 세션
        user_id: 사용자 ID
        
    Returns:
        bool: 성공 여부
        
    Raises:
        HTTPException: 쇼핑 카트가 없을 경우
    r   r   r   T)r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   
clear_cart6   s   r    N)sqlalchemy.ormr   app.models.shopping_cartr   Zapp.models.cart_itemr   fastapir   intr   r   r   boolr    r   r   r   r   <module>   s    