o
    Jh
                     @   s   d dl mZ d dlmZ d dlmZ defddZdefddZdefd	d
Z	dedefddZ
defddZdefddZdedededefddZdefddZdedefddZdedefddZd S )!    )database)HTTPException)Databaselineuser_idc              
      sN   zd}t j|d| idI d H  W d S  ty& } ztdt|dd }~ww )Nz1DELETE FROM chat WHERE lineuser_id = :lineuser_idr   values  status_codedetailr   execute	Exceptionr   strr   querye r   #/home/air/V2/geminiapi/db_module.pydelete_chat_history   s   r   c              
      H   zd}t |d| iI d H W S  ty# } ztdt|dd }~ww )Nz
            SELECT message, response FROM chat WHERE lineuser_id = :lineuser_id
            ORDER BY created_at ASC
            r   r   r	   r   	fetch_allr   r   r   r   r   r   r   get_chat_history   s   r   c              
      r   )Nz
            SELECT message, response 
            FROM chat 
            WHERE lineuser_id = :lineuser_id AND status != 99
            ORDER BY created_at ASC
        r   r   r	   r   r   r   r   r   get_chat_history_exclude_result   s   r   statusc              
      sX   zd}t || |dI d H }|sg W S |W S  ty+ } ztdt|dd }~ww )Nz
            SELECT message, response FROM chat WHERE lineuser_id = :lineuser_id and status = :status
            ORDER BY created_at ASC
            )r   r   r   r	   r   )r   r   r   resultsr   r   r   r   get_chat_history_status&   s   r   c              
      V   zd}t |d| iI d H }|sg W S |W S  ty* } ztdt|dd }~ww )Nz
            SELECT message, response FROM chat
            WHERE lineuser_id = :lineuser_id AND status = 'QUIZ'
            ORDER BY created_at ASC
            r   r   r	   r   r   r   r   r   r   r   r   get_quiz_chat_history4      r    c              
      r   )Nz
            SELECT message, response FROM chat
            WHERE lineuser_id = :lineuser_id AND status != 1
            ORDER BY created_at ASC
            r   r   r	   r   r   r   r   r   get_non_status_one_chat_historyC   r!   r"   messageresponsec              
      sT   zd}t j|| |||ddI d H  W d S  ty) } ztdt|dd }~ww )Nz
            INSERT INTO chat (lineuser_id, status, message, response, created_at)
            VALUES (:lineuser_id, :status, :message, :response, NOW())
            )r   r   r#   r$   r   r   r	   r   )r   r   r#   r$   r   r   r   r   r   save_chat_messageR   s   r%   user_idc              
      s^   zd}t |d| iI d H }|d u rW dS |d W S  ty. } ztdt|dd }~ww )Nza
        SELECT lineuser_key
        FROM lineusers
        WHERE lineuser_key = :userId
        userId lineuser_keyr   r	   )r   	fetch_oner   r   r   )r&   
user_queryresultr   r   r   r   get_user_infob   s   
r-   r)   returnc              
      sd   zd}t |d| iI d H }|d u rtddd|d W S  ty1 } ztdt|dd }~ww )NzDSELECT lineuser_id FROM lineusers WHERE lineuser_key = :lineuser_keyr)   i  zLineuser not foundr	   r   r   )r   r*   r   r   r   )r)   r   r,   r   r   r   r   fetch_lineuser_idq   s   
r/   	user_namec              
      sN   zd}t || |dI d H  W d S  ty& } ztdt|dd }~ww )Nzd
        INSERT INTO lineusers (lineuser_key, lineuser_name) VALUES (:userId, :displayName)
        )r'   displayNamer   r	   r   )r&   r0   insert_queryr   r   r   r   insert_user_info|   s   r3   N)dbr   fastapir   	databasesr   intr   r   r   r   r    r"   r   r%   r-   r/   r3   r   r   r   r   <module>   s    