o
    լi                     @   s   d dl mZmZ d dlZd dlmZ d dlmZ d dl	m	Z	m
Z
mZ dd Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd ZdedefddZdS )    )ListDictN)B_DB_CONFIG)logger)datetimetimezone	timedeltac              
   C   s   z't jjdi t}| }d}||| ||f |  |  |  W d S  tyB } zt	
d|  W Y d }~d S d }~ww )NzGINSERT INTO daily_log (session_id, sender, message) VALUES (%s, %s, %s)zDaily Log Save Error:  )mysql	connectorconnectr   cursorexecutecommitclose	Exceptionr   error)
session_idsendermessageconnr   sqler	   r	   9/home/air/goalskill_t/back/app/models/report_db_module.pysave_daily_log   s   r   c           	   
   C   s   z4t jjdi t}| }d}||| ||||f |  |  |  t	d| d|   W d S  t
yO } ztd|  W Y d }~d S d }~ww )Nz
            INSERT INTO daily_note 
            (session_id, date, learning, today_mindset, ai_comment) 
            VALUES (%s, %s, %s, %s, %s)
        zDaily Note Saved: z - zDaily Note Save Error: r	   r
   r   r   r   r   r   r   r   r   infor   r   )	r   datelearningmindset
ai_commentr   r   r   r   r	   r	   r   save_structured_diary   s   r!   c              
   C      z't jjdi t}|jdd}d}||| f | }|  |  |W S  tyC } zt	
d|  g W  Y d }~S d }~ww )NT
dictionaryzWSELECT sender, message, created_at FROM daily_log WHERE session_id = %s ORDER BY id ASCzDaily Log Load Error: r	   r
   r   r   r   r   r   fetchallr   r   r   r   )r   r   r   r   rowsr   r	   r	   r   get_daily_log_from_db0   s   r(   c              
   C   s   z7t tdd}t|d}tjjd	i t}|j	dd}d}|
|| |f | }|  |  |W S  tyS } ztd|  g W  Y d}~S d}~ww )
uX   오늘의 daily_log만 가져오기 (A' 파트용: 과거 대화를 참조하지 않음)	   hours%Y-%m-%dTr#   zqSELECT sender, message, created_at FROM daily_log WHERE session_id = %s AND DATE(created_at) = %s ORDER BY id ASCzToday Daily Log Load Error: Nr	   )r   r   r   nowstrftimer
   r   r   r   r   r   r&   r   r   r   r   )r   JST	today_strr   r   r   r'   r   r	   r	   r   get_today_daily_log>   s    r1   c              
   C   r"   )NTr#   zz
            SELECT * FROM daily_note 
            WHERE session_id = %s 
            ORDER BY date DESC, id DESC
        zAll Daily Notes Load Error: r	   r%   )r   r   r   r   resultsr   r	   r	   r   get_all_daily_notesR   s   r3   c              
   C   s   z't jjdi t}|jdd}d}||| f | }|  |  |W S  tyB } zt	
d|  W Y d }~d S d }~ww )NTr#   z
            SELECT * FROM daily_note 
            WHERE session_id = %s 
            ORDER BY date DESC, id DESC 
            LIMIT 1
        zLatest Data Load Error: r	   )r
   r   r   r   r   r   fetchoner   r   r   r   )r   r   r   r   resultr   r	   r	   r   get_yesterday_datah   s   r6   c              
   C   s   z7t tdd}t|d}tjjdi t}|j	dd}d}|
|| |f | }|  |  |W S  tyR } ztd|  W Y d }~d S d }~ww )	Nr)   r*   r,   Tr#   zUSELECT * FROM daily_note WHERE session_id = %s AND date = %s ORDER BY id DESC LIMIT 1zToday Data Load Error: r	   )r   r   r   r-   r.   r
   r   r   r   r   r   r4   r   r   r   r   )r   r/   r0   r   r   r   r5   r   r	   r	   r   get_today_data   s    r7   c              
   C   s   z/t jjdi t}| }d}||||| f |  |  |  t	d|   W d S  t
yJ } ztd|  W Y d }~d S d }~ww )Nz@UPDATE daily_note SET ai_comment = %s, advice = %s WHERE id = %szUpdated AI Feedback for ID: zAI Feedback Update Error: r	   r   )r   r    advicer   r   r   r   r	   r	   r   update_yesterday_ai_feedback   s   r9   c              
   C   s   z:t jjdi t}| }d}|||| |f |  |j}|  |  t	
d|  d| d|  |dkW S  tyU } zt	d|  W Y d }~dS d }~ww )	NzKUPDATE daily_note SET boss_comment = %s WHERE session_id = %s AND date = %szUpdated Boss Comment for z on z. Affected: r   zBoss Comment Update Error: Fr	   )r
   r   r   r   r   r   r   rowcountr   r   r   r   r   )r   r   boss_commentr   r   r   	row_countr   r	   r	   r   update_boss_comment   s    
r=   r   returnc           	   
   C   s   d }z<t tdd}t|}|d}tjjdi t}|	 }d}|
|| |f | }|  |  |r<dW S dW S  tyc } ztd|  |rX| rX|  W Y d }~dS d }~ww )	Nr)   r*   r,   zESELECT id FROM daily_note WHERE session_id = %s AND date = %s LIMIT 1TFzCheck Today Log Error: r	   )r   r   r   r-   r.   r
   r   r   r   r   r   r4   r   r   r   r   is_connected)	r   r   r/   r-   r0   r   r   rowr   r	   r	   r   check_today_daily_log_exists   s(   

rA   )typingr   r   mysql.connectorr
   app.core.configr   app.corer   r   r   r   r   r!   r(   r1   r3   r6   r7   r9   r=   strboolrA   r	   r	   r	   r   <module>   s    