
    Bi\"                        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mZmZ d dl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e                    ddg	          d             Ze                    ddg	          d             ZdS )    )	Blueprintrequestjsonify)dbUser)resolve_user_ref)SnsPostSnsLike
SnsCommentFollowNsnsz
/sns/postsGET)methodsc                     	 t           j                            ddt                    } t           j                            ddt                    }t           j                            dt                    }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   SNS 게시글 피드 조회page   typeper_page
   user_idFr   r   	error_outc                 6    g | ]}|                                 S  to_dict.0posts     G/var/www/html/web/mlink/mlink_AI_Server/mlink-backend/src/routes/sns.py
<listcomp>z!get_sns_posts.<locals>.<listcomp>        ===dllnn===    )poststotalpagescurrent_pageerror  N)r   argsgetintstrr	   queryfilter	author_idorder_by
created_atdescpaginater   itemsr&   r'   	Exception)r   r   r   r/   r%   es         r!   get_sns_postsr9   	   sL   /|44<##J#==,""93"77  	?LL!2g!=>>Ew1668899BBE C 
 
 =====[[ 	
 
   	  / / /Q())3......./s   DD 
E%E
E
EPOSTc                     	 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        t          j        |                     dg                     t          j        |                     d	g                     
          }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   SNS 게시글 작성contentr1   r)    is required  User not found  
image_urlshashtags)r<   r1   rA   rB      r*   N)r   get_jsonr   r   r	   r   jsondumpsr,   r   sessionaddcommitr   r7   rollbackr.   )datarequired_fieldsfielduserr    r8   s         r!   create_sns_postrO   $   s   /!! %k2$ 	G 	GED  E)?)?)?@AA3FFFF !  [ 122 	=G%5677<<Olz$((<"<"<==ZR 8 899	
 
 
 	
t

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

Q())3......./s)   6D. *D. $C	D. .
F 8=E;5F ;F z/sns/posts/<int:post_id>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   SNS 게시글 상세 조회c                 D    g | ]}|j         	|                                S )N)	parent_idr   )r   comments     r!   r"   z get_sns_post.<locals>.<listcomp>K   s+     m m mwSZSdSl!2!2SlSlSlr$   commentsr)   r*   N)r	   r/   
get_or_404r   rT   r   r7   r.   )post_idr    	post_datar8   s       r!   get_sns_postrX   D   s    /}''00LLNN	 m m$- m m m	*y!!! / / /Q())3......./s   AA 
B"BBBz/sns/posts/<int:post_id>/likec                    	 t           j                            |           }t          j                    }d|vrt          ddi          dfS t          |d                   }|st          ddi          dfS |j        }t          j        	                    | |          
                                }|rat          j                            |           t          j                                         t          dt          |j                  d	          S t          | |          }t          j                            |           t          j                                         t          d
t          |j                  d	          S # t$          $ rH}t          j                                         t          dt)          |          i          dfcY d}~S d}~ww xY w)u   SNS 게시글 좋아요r   r)   zuser_id is requiredr>   r?   r@   )rV   r   F)liked
like_countTr*   N)r	   r/   rU   r   rD   r   r   r   r
   	filter_byfirstr   rG   deleterI   lenlikesrH   r7   rJ   r.   )rV   r    rK   lulidexisting_likeliker8   s           r!   like_sns_postre   Q   s   !/}''00!!D  G%:;<<cAAd9o.. 	=G%5677<<j  // 0 
 
 %'' 	
  	KJm,,,JU#dj//JJKKK   D JNN4   JTTZIIJJJ / / /

Q())3......./s2   AF )F 5BF A1F 
G=GGGz!/sns/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   SNS 게시글 댓글 작성r<   r1   r)   r=   r>   r?   r@   rR   )r<   rV   r1   rR   rC   r*   N)r	   r/   rU   r   rD   r   r   r   r   r,   r   rG   rH   rI   r   r7   rJ   r.   )rV   r    rK   rL   rM   aurS   r8   s           r!   create_sns_commentrh   w   s   /}''00!! %k2$ 	G 	GED  E)?)?)?@AA3FFFF ! d;/00 	=G%5677<<Ojhh{++	
 
 
 	
w

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

Q())3......./s+   AD *D BD 
E&=E!E&!E&z/sns/followc                     	 t          j                    } ddg}|D ]}|| vrt          d| di          dfc S t          | d                   }t          | d                   }|r|st          ddi          dfS |j        |j        }}||k    rt          ddi          dfS t
          j                            ||	                                          }|rNt          j
                            |           t          j
                                         t          d
di          S t          ||	          }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   사용자 팔로우follower_idfollowing_idr)   r=   r>   r?   r@   zCannot follow yourself)rj   rk   	followingFTr*   N)r   rD   r   r   r   r   r/   r\   r]   r   rG   r^   rI   rH   r7   rJ   r.   )
rK   rL   rM   futufidtidexisting_followfollowr8   s
             r!   follow_userrs      s   &/!!(.9$ 	G 	GED  E)?)?)?@AA3FFFF ! d=122d>233 	= 	=G%5677<<:rzS#::G%=>??DD !,00 1 
 
 %'' 	
  	0Jo...JK/000    F JNN6"""JK./// / / /

Q())3......./s7   6F AF ;&F "BF %AF 
G=GGGz,/sns/users/<string:business_user_id>/profilec                 R   	 t           j                            |                                           }t          j                            |                                           }t          j                            |                                           }t          j                            |                                           }|                                |||d}t          |          S # t          $ r*}t          dt          |          i          dfcY d}~S d}~ww xY w)	u+   사용자 프로필 조회 (업무 user_id))r   rk   rj   )r1   )rN   follower_countfollowing_count
post_countr)   r*   N)r   r/   r\   first_or_404r   countr	   r   r   r7   r.   )business_user_idrN   rw   rx   ry   profiler8   s          r!   get_user_profiler~      s   /z##,<#==JJLL//=M/NNTTVV ,00=M0NNTTVV],,7G,HHNNPP
 LLNN,.$	
 
 w / / /Q())3......./s   C/C2 2
D&<D!D&!D&z"/sns/users/<int:user_id>/followersc                    	 t           j                            |                                           }d |D             }t	          |          S # t
          $ r*}t	          dt          |          i          dfcY d}~S d}~ww xY w)u   팔로워 목록 조회ru   c                 @    g | ]}|j                                         S r   )followerr   r   rr   s     r!   r"   z!get_followers.<locals>.<listcomp>   s&    EEE6V_,,..EEEr$   r)   r*   Nr   r/   r\   allr   r7   r.   )r   follows	followersr8   s       r!   get_followersr      s    /,((g(>>BBDDEEWEEE	y!!! / / /Q())3......./   AA 
BA>8B>Bz"/sns/users/<int:user_id>/followingc                    	 t           j                            |                                           }d |D             }t	          |          S # t
          $ r*}t	          dt          |          i          dfcY d}~S d}~ww xY w)u   팔로잉 목록 조회rv   c                 @    g | ]}|j                                         S r   )rl   r   r   s     r!   r"   z!get_following.<locals>.<listcomp>   s'    FFFFV%--//FFFr$   r)   r*   Nr   )r   r   rl   r8   s       r!   get_followingr      s    /,((W(==AACCFFgFFF	y!!! / / /Q())3......./r   z/sns/hashtags/<hashtag>c                 t   	 t           j                            ddt                    }t           j                            ddt                    }t          j                            t          j                            d|  d                    	                    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    해시태그별 게시글 조회r   r   r   r   r   z%"z"%Fr   c                 6    g | ]}|                                 S r   r   r   s     r!   r"   z(get_posts_by_hashtag.<locals>.<listcomp>   r#   r$   )r%   r&   r'   r(   hashtagr)   r*   N)r   r+   r,   r-   r	   r/   r0   rB   rd   r2   r3   r4   r5   r   r6   r&   r'   r7   r.   )r   r   r   r%   r8   s        r!   get_posts_by_hashtagr      s@   /|44<##J#== $$!!"2w"2"2"233
 

(7%**,,
-
-hhE /7 /
 /
 	 =====[[ 
 
   	  / / /Q())3......./s   D D 
D7D2,D72D7)flaskr   r   r   src.models.userr   r   src.utils.user_refr   src.models.snsr	   r
   r   r   rE   __name__sns_bprouter9   rO   rX   re   rh   rs   r~   r   r   r   r   r$   r!   <module>r      sm   - - - - - - - - - - $ $ $ $ $ $ $ $ / / / / / / ? ? ? ? ? ? ? ? ? ? ? ? 	5(	#	#lUG,,/ / -,/4 lVH--/ / .-/> (5'::
/ 
/ ;:
/ -x@@#/ #/ A@#/J 1F8DD/ / ED/< mfX..(/ (/ /.(/T <ugNN/ / ON/* 2UGDD/ / ED/ 2UGDD/ / ED/ '%99/ / :9/ / /r$   