o
    g
                     @   st   d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	m
Z
mZ d dlmZmZ d dlmZ G dd	 d	eZdS )
    N)List)BaseChatMessageHistory)	AIMessageHumanMessage)selectascdesc)ChatMessageChatSession)datetimec                	   @   s   e Zd ZdededefddZedefddZd	d
 Zdd Z	defddZ
	ddedededefddZdedefddZdd ZdS )MySQLChatMessageHistory
session_id	socket_id
created_byc                 C   s   || _ || _|| _|| _d S N)dbr   r   r   )selfr   r   r   r    r   ?/var/www/html/XCapMarket/services/docchat/chat_history_mysql.py__init__   s   
z MySQLChatMessageHistory.__init__returnc                    sx   t j| jkg}tt jg}| jjt ||ddI d H }g }|D ]}|jr-|t|jd |j	r9|t
|j	d q|S )N
   )modelfiltersorder_bylimit)content)r	   r   r   
created_atr   execute_queryquestionappendr   responser   )r   r   r   resultsmessageschat_messager   r   r   r#      s$   
z MySQLChatMessageHistory.messagesc                 C      d S r   r   )r   messager   r   r   add_message*      z#MySQLChatMessageHistory.add_messagec                 C   r%   r   r   r   r   r   r   clear.   r(   zMySQLChatMessageHistory.clearc                    s   | j I d H S r   )r#   r)   r   r   r   aget_messages2   s   z%MySQLChatMessageHistory.aget_messagesr   r   r!   r   tokens_usedc                    sB   t tt | j||||| j| j| jd	}| j|I d H  d S )N)	idr   r   r!   r,   ai_model_usedr   modified_byr   )	r	   struuiduuid4r   r   r   r   execute_insert)r   r   r!   r   r,   new_chatr   r   r   add_interaction5   s   
z'MySQLChatMessageHistory.add_interactionnameuser_idc                    s8   t j| jkg}| jjt |||t ddI d H  d S )N)r6   r/   modified_at)r   values)r
   r   r   update_recordr   now)r   r6   r7   r   r   r   r   update_chat_session_nameJ   s   
z0MySQLChatMessageHistory.update_chat_session_namec                    s   | j jt| jddI d H S )Nr   )	record_idprimary_key_column)r   
get_recordr
   r   r)   r   r   r   get_chat_session_nameX   s   z-MySQLChatMessageHistory.get_chat_session_nameN)r   )__name__
__module____qualname__r0   r   propertyr   r#   r'   r*   r+   intr5   r<   r@   r   r   r   r   r   
   s&    
r   )r1   typingr   langchain_core.chat_historyr   langchain_core.messagesr   r   
sqlalchemyr   r   r   models.docchatr	   r
   r   r   r   r   r   r   <module>   s    