U
    ¯j]  ã                   @   s4   d dl mZmZ d dlmZ d dlmZ dd„ ZdS )é    )ÚrequestÚjsonify)Úget_db)Úadmin_requiredc                 C   sˆ   | j ddgddd„ ƒ}| j ddgddd„ ƒ}| j dd	gdtd
d„ ƒƒ}| j ddgdtdd„ ƒƒ}| j ddgdtdd„ ƒƒ}d S )Nz	/api/newsÚGET)Úmethodsc                  S   s    t tj dd¡ƒ} t tj dd¡ƒ}| d | }tƒ }| ¡ }zR| d¡ | ¡ d }| d||f¡ | 	¡ }dd	„ |D ƒ}t
||| |d
œƒW ¢S | ¡  X d S )NÚpageé   Úlimité
   z4SELECT COUNT(*) FROM news WHERE status = "published"r   z§
                SELECT * FROM news WHERE status = "published" 
                ORDER BY sort_order ASC, created_at DESC 
                LIMIT ? OFFSET ?
            c                 S   s   g | ]}t |ƒ‘qS © )Údict)Ú.0Úrowr   r   ú9D:\Project\Python Project\BangBang\backend\routes\news.pyÚ
<listcomp>   s     z:register_news_routes.<locals>.get_news.<locals>.<listcomp>)ÚitemsÚtotalr   r
   )Úintr   ÚargsÚgetr   ÚcursorÚcloseÚexecuteÚfetchoneÚfetchallr   )r   r
   ÚoffsetÚconnr   r   Úrowsr   r   r   r   Úget_news   s    
üz&register_news_routes.<locals>.get_newsz/api/news/<int:news_id>c                 S   s`   t ƒ }| ¡ }zB| d| f¡ | ¡ }|r:tt|ƒƒW ¢S tddiƒdfW ¢S W 5 | ¡  X d S )Nz8SELECT * FROM news WHERE id = ? AND status = "published"Úerrorõ   èµ„è®¯ä¸å­˜åœ¨é”  )r   r   r   r   r   r   r   )Únews_idr   r   r   r   r   r   Úget_news_item   s    z+register_news_routes.<locals>.get_news_itemÚPUTc                 S   sô   t j}| d¡s tddiƒdfS tƒ }| ¡ }z¶z‚| d| d¡| dd¡| dd¡| d	d¡| d
d¡| dd¡| f¡ | ¡  |j	dkr¢tddiƒdfW W ¢FS tddiƒW W ¢4S  t
k
rà } z| ¡  |‚W 5 d }~X Y nX W 5 | ¡  X d S )NÚtitler    õ   æ ‡é¢˜ä¸èƒ½ä¸ºç©ºé  aJ  
                UPDATE news SET 
                    title = ?, 
                    summary = ?,
                    content = ?, 
                    image_url = ?, 
                    status = ?, 
                    sort_order = ?,
                    updated_at = CURRENT_TIMESTAMP
                WHERE id = ?
            ÚsummaryÚ ÚcontentÚ	image_urlÚstatusÚdraftÚ
sort_orderr   r!   r"   ÚsuccessT)r   Újsonr   r   r   r   r   r   ÚcommitÚrowcountÚ	ExceptionÚrollback)r#   Údatar   r   Úer   r   r   Úupdate_news.   s0    





ùö
z)register_news_routes.<locals>.update_newsÚPOSTc                  S   sÚ   t j} |  d¡s tddiƒdfS tƒ }| ¡ }zœzh| d|  d¡|  dd¡|  dd¡|  d	d¡|  d
d¡|  dd¡f¡ |j}| 	¡  t|ddœƒW W ¢4S  t
k
rÆ } z| ¡  |‚W 5 d }~X Y nX W 5 | ¡  X d S )Nr&   r    r'   r(   z‘
                INSERT INTO news (title, summary, content, image_url, status, sort_order)
                VALUES (?, ?, ?, ?, ?, ?)
            r)   r*   r+   r,   r-   r.   r/   r   T)Úidr0   )r   r1   r   r   r   r   r   r   Ú	lastrowidr2   r4   r5   )r6   r   r   r#   r7   r   r   r   Úcreate_newsY   s,    





úýz)register_news_routes.<locals>.create_newsÚDELETEc              
   S   sœ   t ƒ }| ¡ }z~zJ| d| f¡ | ¡  |jdkrHtddiƒdfW W ¢HS tdddœƒW W ¢4S  tk
rˆ } z| ¡  |‚W 5 d }~X Y nX W 5 | ¡  X d S )	NzDELETE FROM news WHERE id = ?r   r    r!   r"   Tu   åˆ é™¤æˆåŠŸ)r0   Úmessage)	r   r   r   r   r2   r3   r   r4   r5   )r#   r   r   r7   r   r   r   Údelete_newsz   s    
z)register_news_routes.<locals>.delete_news)Úrouter   )Úappr   r$   r8   r<   r?   r   r   r   Úregister_news_routes   s    

)rB   N)Úflaskr   r   Zutils.databaser   Z
utils.authr   rB   r   r   r   r   Ú<module>   s   