
    Bi                     z   d dl mZmZmZ d dlmZmZ d dlmZ d dl	m
Z
mZ d dlmZ  ede          Ze                    ddg	          d
             Ze                    ddg	          d             Ze                    ddg	          d             Ze                    ddg	          d             Ze                    ddg	          d             Ze                    ddg	          d             Ze                    ddg	          d             Ze                    ddg	          d             ZdS )    )	Blueprintrequestjsonify)dbUser)resolve_user_ref)PostComment)datetimepostz/postsGET)methodsc                     	 t           j                            ddt                    } t           j                            ddt                    }t           j                            dd          }t          j        }|r#|                    t          j        |k              }|                    t          j	        
                                                              | |d	          }t          d
 |j        D             |j        |j        | d          S # 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_outc                 6    g | ]}|                                 S  )to_dict).0r   s     H/var/www/html/web/mlink/mlink_AI_Server/mlink-backend/src/routes/post.py
<listcomp>zget_posts.<locals>.<listcomp>   s     ===dllnn===    )poststotalpagescurrent_pageerror  N)r   argsgetintr	   queryfilterr   order_by
created_atdescpaginater   itemsr    r!   	Exceptionstr)r   r   r   r(   r   es         r   	get_postsr2   	   sE   /|44<##J#==<##J33
 	<LL(!:;;Et335566??E @ 
 
 =====[[ 	
 
   	  / / /Q())3......./s   DD 
E	E>E	E	POSTc                     	 t          j                    } g d}|D ]}|| vrt          d| di          dfc S t          | d                   }|st          ddi          dfS t	          | d         | d	         | d
         |j                  }t          j                            |           t          j        	                                 t          |
                                          dfS # t          $ rH}t          j                                         t          dt          |          i          dfcY d}~S d}~ww xY w)u   게시글 작성)titlecontentr   	author_idr#    is required  r7   User not found  r5   r6   r      r$   N)r   get_jsonr   r   r	   user_idr   sessionaddcommitr   r/   rollbackr0   )datarequired_fieldsfielduserr   r1   s         r   create_postrG   "   st   /!! HGG$ 	G 	GED  E)?)?)?@AA3FFFF !  [ 122 	=G%5677<<w-O*%l	
 
 
 	
t

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

Q())3......./s)   6C. *C. $B	C. .
E 8=D;5E ;E z/posts/<int:post_id>c                 z   	 t           j                            |           }|xj        dz  c_        t          j                                         |                                }d |j        D             |d<   t          |          S # t          $ r*}t          dt          |          i          dfcY d}~S d}~ww xY w)u   게시글 상세 조회r   c                 D    g | ]}|j         	|                                S )N)	parent_idr   )r   comments     r   r   zget_post.<locals>.<listcomp>N   s+     m m mwSZSdSl!2!2SlSlSlr   commentsr#   r$   N)r	   r(   
get_or_404viewsr   r?   rA   r   rL   r   r/   r0   )post_idr   	post_datar1   s       r   get_postrQ   B   s    /z$$W-- 	

a



 LLNN	 m m$- m m m	*y!!! / / /Q())3......./s   BB 
B:B5/B:5B:PUTc                    	 t           j                            |           }t          j                    }d|v r:t          |d                   }|r|j        |j        k    rt          ddi          dfS g d}|D ]}||v rt          ||||                    t          j                    |_        t          j                                         t          |                                          S # t"          $ rH}t          j                                         t          dt'          |          i          dfcY d}~S d}~ww xY w)u   게시글 수정r7   r#   Unauthorizedi  )r5   r6   r   r$   N)r	   r(   rM   r   r=   r   r>   r7   r   setattrr   now
updated_atr   r?   rA   r   r/   rB   r0   )rO   r   rC   otherupdatable_fieldsrE   r1   s          r   update_postrZ   T   sK   /z$$W--!! $$T+%677E ?EMT^;;8993>> <;;% 	2 	2E}}eT%[111",..

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

Q())3......./s%   A/C- 2A:C- -
D?7=D:4D?:D?DELETEc                    	 t           j                            |           }t          j                            |           t          j                                         t          ddi          S # t          $ rH}t          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(   rM   r   r?   deleterA   r   r/   rB   r0   )rO   r   r1   s      r   delete_postr_   o   s    /z$$W-- 	
$

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

Q())3......./s   A,A/ /
C9=B<6C<Cz/posts/<int:post_id>/commentsc                    	 t           j                            |           }t          j                    }ddg}|D ]}||vrt          d| di          dfc S t          |d                   }|st          ddi          dfS t          |d         | |j        |	                    d          	          }t          j                            |           t          j                                         t          |                                          d
fS # t          $ rH}t          j                                         t          dt#          |          i          dfcY d}~S d}~ww xY w)u   댓글 작성r6   r7   r#   r8   r9   r:   r;   rJ   )r6   rO   r7   rJ   r<   r$   N)r	   r(   rM   r   r=   r   r   r
   r>   r&   r   r?   r@   rA   r   r/   rB   r0   )rO   r   rC   rD   rE   rF   rK   r1   s           r   create_commentra      s   /z$$W--!! %k2$ 	G 	GED  E)?)?)?@AA3FFFF !  [ 122 	=G%5677<<Olhh{++	
 
 
 	
w

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

Q())3......./s+   AD *D BD 
E&=E!E&!E&z/posts/<int:post_id>/likec                    	 t           j                            |           }t          j                    }d|vrt          ddi          dfS |xj        dz  c_        t          j        	                                 t          d|j        i          S # t          $ rH}t          j                                         t          dt          |          i          dfcY d}~S d}~ww xY w)	u   게시글 좋아요r>   r#   zuser_id is requiredr9   r   likesr$   N)r	   r(   rM   r   r=   r   rc   r   r?   rA   r/   rB   r0   )rO   r   rC   r1   s       r   	like_postrd      s    /z$$W--!!D  G%:;<<cAA 	

a



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

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