o
    ga                     @   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 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 d dlmZ d dlmZ e Zejdee deefdefddZedeeeefdedefddZ dS )    )	APIRouterDependsHTTPExceptionstatus)Session)List)Advertisement)get_dbget_current_user)AdvertisementResponse)PointTransaction)
UserPoints)User)AdvertisementClickRequest)now)process_advertisement_click/)response_modeldbc                 C   s   |  ttj }|S )u   
    광고 데이터를 조회하여 프론트엔드에 반환합니다.
    반환 항목: id, 광고 URL, 광고가 게시될 순서, 광고에 해당하는 포인트.
    )queryr   order_byZvideo_list_orderall)r   Zads r   +/app/app/api/v1/endpoints/advertisements.pyget_advertisements   s   r   z/clickreqc              
   C   sB   zt ||j| j}|W S  ty  } z	ttjt|dd}~ww )us   
    광고 클릭 시 실행되어, 포인트 지급 및 사용자 포인트 업데이트를 진행합니다.
    )status_codedetailN)r   idZad_id	Exceptionr   r   HTTP_400_BAD_REQUESTstr)r   r   current_userresulter   r   r   advertisement_click   s   	r%   N)!fastapir   r   r   r   sqlalchemy.ormr   typingr   Zapp.models.advertisementr   Zapp.api.depsr	   r
   Zapp.schemas.advertisementr   Zapp.models.point_transactionr   Zapp.models.user_pointsr   app.models.userr   Zapp.schemas.advertisement_clickr   app.core.timer   Z"app.services.advertisement_servicer   routergetr   postr%   r   r   r   r   <module>   s.    	