
    i                        d dl mZmZmZ d dlmZmZ d dlmZm	Z	 d dl
m
Z
  ede      Zej                  ddg      d	        Zej                  dd
g      d        Zej                  ddg      d        Zej                  ddg      d        Zej                  ddg      d        Zej                  dd
g      d        Zej                  dd
g      d        Zej                  ddg      d        Zy)    )	Blueprintrequestjsonify)dbUser)PostComment)datetimepostz/postsGET)methodsc                     	 t         j                  j                  ddt              } t         j                  j                  ddt              }t         j                  j                  dd      }t        j
                  }|r"|j                  t        j                  |k(        }|j                  t        j                  j                               j                  | |d	      }t        |j                  D cg c]  }|j                          c}|j                  |j                   | d
      S c c}w # t"        $ r"}t        dt%        |      i      dfcY d}~S d}~ww xY w)u   게시글 목록 조회page   )typeper_page
   category F)r   r   	error_out)poststotalpagescurrent_pageerror  N)r   argsgetintr   queryfilterr   order_by
created_atdescpaginater   itemsto_dictr   r   	Exceptionstr)r   r   r   r    r   r   es          D/home/kdj-ubuntu1/mlink_AI_Server/mlink-backend/./src/routes/post.py	get_postsr,      s   /||4<<##J#=<<##J3

LL(!:;Et3356??E @ 
 16=dlln=[[[[ 	
  	=
  /Q()3../s0   C2D0 4D+D0 +D0 0	E9EEEPOSTc                  V   	 t        j                         } g d}|D ]  }|| vst        d| di      dfc S  t        j                  j                  | d         }|st        ddi      dfS t        | d   | d	   | d
   | d         }t        j                  j                  |       t        j                  j                          t        |j                               dfS # t        $ r@}t        j                  j                          t        dt        |      i      dfcY d}~S d}~ww xY w)u   게시글 작성)titlecontentr   	author_idr    is required  r1   User not found  r/   r0   r      r   N)r   get_jsonr   r   r    r   r   r   sessionaddcommitr'   r(   rollbackr)   )datarequired_fieldsfielduserr   r*   s         r+   create_postr@   !   s   /! H$ED E7,)?@A3FF %
 zz~~d;/0G%567<<w-O*%;'	
 	

t


t||~&++ /


Q()3../s.   !C C 3C ,A2C 	D((5D#D(#D(z/posts/<int:post_id>c                    	 t         j                  j                  |       }|xj                  dz  c_        t        j
                  j                          |j                         }|j                  D cg c]  }|j                  |j                         ! c}|d<   t        |      S c c}w # t        $ r"}t        dt        |      i      dfcY d}~S d}~ww xY w)u   게시글 상세 조회r   Ncommentsr   r   )r   r    
get_or_404viewsr   r8   r:   r'   rB   	parent_idr   r(   r)   )post_idr   	post_datacommentr*   s        r+   get_postrI   A   s    /zz$$W- 	

a



 LLN	BF-- m-wSZSdSdSl!2- m	*y!! !n  /Q()3../s6   A0B, 2B'B'B, 'B, ,	C5CCCPUTc                 ,   	 t         j                  j                  |       }t        j                         }d|v r!|j
                  |d   k7  rt        ddi      dfS g d}|D ]  }||v st        ||||           t        j                         |_
        t        j                  j                          t        |j                               S # t        $ r@}t        j                  j!                          t        dt#        |      i      dfcY d}~S d}~ww xY w)u   게시글 수정r1   r   Unauthorizedi  )r/   r0   r   r   N)r   r    rC   r   r7   r1   r   setattrr
   now
updated_atr   r8   r:   r'   r(   r;   r)   )rF   r   r<   updatable_fieldsr>   r*   s         r+   update_postrQ   S   s    /zz$$W-! $4>>T+5F#FG^45s:: <%E}eT%[1 & #,,.


t||~&& /


Q()3../s+   AC
 C
 (A!C
 
	D5DDDDELETEc                 n   	 t         j                  j                  |       }t        j                  j                  |       t        j                  j                          t        ddi      S # t        $ r@}t        j                  j                          t        dt        |      i      dfcY d}~S d}~ww xY w)u   게시글 삭제messagezPost deleted successfullyr   r   N)r   r    rC   r   r8   deleter:   r   r(   r;   r)   )rF   r   r*   s      r+   delete_postrV   l   s    /zz$$W- 	

$


	#>?@@ /


Q()3../s   A(A+ +	B445B/)B4/B4z/posts/<int:post_id>/commentsc                    	 t         j                  j                  |       }t        j                         }ddg}|D ]  }||vst        d| di      dfc S  t        j                  j                  |d         }|st        ddi      dfS t        |d   | |d   |j                  d      	      }t        j                  j                  |       t        j                  j                          t        |j                               d
fS # t        $ r@}t        j                  j                          t        dt!        |      i      dfcY d}~S d}~ww xY w)u   댓글 작성r0   r1   r   r2   r3   r4   r5   rE   )r0   rF   r1   rE   r6   r   N)r   r    rC   r   r7   r   r   r   r	   r   r8   r9   r:   r'   r(   r;   r)   )rF   r   r<   r=   r>   r?   rH   r*   s           r+   create_commentrX   ~   s/   /zz$$W-! %k2$ED E7,)?@A3FF %
 zz~~d;/0G%567<<O;'hh{+	
 	

w


w()3.. /


Q()3../s1   A D D 3D A;D 	E5EEEz/posts/<int:post_id>/likec                    	 t         j                  j                  |       }t        j                         }d|vrt        ddi      dfS |xj                  dz  c_        t        j                  j                          t        d|j                  i      S # t        $ r@}t        j                  j                          t        dt        |      i      dfcY d}~S d}~ww xY w)	u   게시글 좋아요user_idr   zuser_id is requiredr3   r   likesr   N)r   r    rC   r   r7   r   r[   r   r8   r:   r(   r;   r)   )rF   r   r<   r*   s       r+   	like_postr\      s    /zz$$W-!D G%:;<cAA 	

a



,-- /


Q()3../s%   AB A	B 	C5CCCz/categoriesc            
      \    ddddddddddd	dd
dddddddddddg} t        |       S )u   게시판 카테고리 목록noticeu   공지사항)idnameupdateu   업데이트guideu	   가이드qnau   문의/답변tipu   이용 꿀팁faqu   자주 묻는 질문freeu   자유게시판r   u   기능 요청)r   )
categoriess    r+   get_categoriesrh      sZ     00,o.o.4501/2	J :    N)flaskr   r   r   src.models.userr   r   src.models.postr   r	   r
   __name__post_bprouter,   r@   rI   rQ   rV   rX   r\   rh    ri   r+   <module>rq      s=   - - $ ) 
FH
%x%)/ */0 	x&*/ +/> 	%w7/ 8/" 	%w7/ 8/0 	%z:/ ;/" 	.A/ B/@ 	*VH=/ >/$ 	}ug. /ri   