o
    g                     @   s   U 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 d dlmZ e Ze Zi Ze
eef ed< edeejeejfd	ed
edefddZdS )    )	APIRouter	WebSocketWebSocketDisconnectDepends)deps)message_service)Dict)Session)setup_loggingactive_connectionsz/ws/chat/{friend_id}	websocket	friend_iddbc                    s   t d|j d|  |  I dH  | t|j< z=	 |  I dH }tj||j||d}t d|j  | d| I dH  |tv rVt| }||j	 d| I dH  q t
ys   |jtv rft|j= t d	|j d
 Y dS w )z
    Supports real-time chat between the currently logged-in user and the user with friend_id.
    This example primarily functions as an echo for messages.
    z'WebSocket connection attempt from user z to friend NT)r   	sender_idreceiver_idcontentzMessage saved with id zYou: z: zClient #z disconnected)loggerinfoidacceptr   receive_textr   create_message	send_text
first_namer   )r   r   r   current_userdatamessageZ	friend_ws r   $/app/app/api/v1/endpoints/ws_chat.pywebsocket_chat   s0   

r   N)fastapir   r   r   r   Zapp.apir   Zapp.servicesr   typingr   sqlalchemy.ormr	   app.core.logging_configr
   routerr   r   int__annotations__r   get_dbget_current_ws_userr   r   r   r   r   <module>   s&   