
    Ui                        d Z ddlmZmZmZ ddlZddlmZm	Z	 ddl
mZ d Z	 	 ddeded	ed
ee         dee         defdZdedee         fdZdedee         fdZ	 	 ddedee         d	ee         defdZdedefdZdS )u`   
study_note CRUD – 학습 노트 모듈
study_note 테이블은 chat_log_DB 에 생성한다.
    )OptionalListDictN)CHAT_LOG_DB_CONFIGlogger)get_current_dailyc                     d} 	 t          j        j        di t          } |                                 }|                    d           |                                  |                                 t          j	        d           n.# t          $ r!}t          j        d|            Y d}~nd}~ww xY w| r|                                  dS dS # | r|                                  w w xY w)u(   study_note 테이블이 없으면 생성Na  
            CREATE TABLE IF NOT EXISTS study_note (
                id            INT AUTO_INCREMENT PRIMARY KEY,
                session_id    VARCHAR(100) NOT NULL,
                daily         INT DEFAULT 0,
                title         VARCHAR(200) DEFAULT '',
                content       TEXT,
                source_message TEXT,
                created_at    DATETIME DEFAULT CURRENT_TIMESTAMP,
                updated_at    DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
                INDEX idx_session_daily (session_id, daily)
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
        z[note] study_note table readyz&[note] ensure_study_note_table Error:  )mysql	connectorconnectr   cursorexecutecommitcloser   info	Exceptionerror)connr   es      /app/app/models/note_module.pyensure_study_note_tabler      s   D&<<);<<  	 	 	 	34444 C C CAaAABBBBBBBBC  	JJLLLLL	 	4 	JJLLLL	s0   B B C 
B0B+&C +B00C C&
session_idtitlecontentsource_messagedailyreturnc                 :   |#	 t          |           }n# t          $ r d}Y nw xY wd}	 t          j        j        di t
          }|                                }d}|                    || ||||f           |                                 |j	        }|
                                 t          j        d| d|             ||r|
                                 S S # t          $ r}	t          j        d|	             d}	~	ww xY w# |r|
                                 w w xY w)u$   새 노트 생성 → note_id 반환Nr   z
            INSERT INTO study_note (session_id, daily, title, content, source_message)
            VALUES (%s, %s, %s, %s, %s)
        z[note] Created note #z for z [note] create_study_note Error: r
   )r   r   r   r   r   r   r   r   r   	lastrowidr   r   r   r   )
r   r   r   r   r   r   r   sqlnote_idr   s
             r   create_study_noter#   1   s^    }	%j11EE 	 	 	EEE	 D&<<);<< 	sZwOPPP"FGFF*FFGGG
  	JJLLLL		    ;;;<<<  	JJLLLL	s0    ##BC 
C>!C99C>>D Dc                    d}	 t          j        j        di t          }|                    d          }d}|                    || f           |                                }|                                 ||r|                                 S S # t          $ r:}t          j
        d|            g cY d}~|r|                                 S S d}~ww xY w# |r|                                 w w xY w)u*   유저의 전체 노트 목록 (최신순)NT
dictionaryz
            SELECT id, session_id, daily, title, content, source_message, created_at, updated_at
            FROM study_note
            WHERE session_id = %s
            ORDER BY updated_at DESC
        z[note] get_study_notes Error: r
   )r   r   r   r   r   r   fetchallr   r   r   r   )r   r   r   r!   rowsr   s         r   get_study_notesr)   Q   s   D&<<);<<-- 	sZM***  
  	JJLLLL		    9a99:::					 	JJLLLL		  	JJLLLL	s0   A3B 
CC1C2C CC C/r"   c                    d}	 t          j        j        di t          }|                    d          }d}|                    || f           |                                }|                                 ||r|                                 S S # t          $ r:}t          j
        d|            Y d}~|r|                                 dS dS d}~ww xY w# |r|                                 w w xY w)u   단일 노트 조회NTr%   z&SELECT * FROM study_note WHERE id = %sz[note] get_study_note Error: r
   )r   r   r   r   r   r   fetchoner   r   r   r   )r"   r   r   r!   rowr   s         r   get_study_noter-   i   s   D&<<);<<--6sWJ'''oo
  	JJLLLL		    8Q88999ttt 	JJLLLLL	 		  	JJLLLL	s*   A3B 
CC0C CC C/c                 t   d}	 t          j        j        di t          }|                                }g }g }|*|                    d           |                    |           |*|                    d           |                    |           |s	 |r|                                 dS dS dd                    |           d}|                    |            |                    |t          |                     |
                                 |                                 t          j        d|             	 |r|                                 d	S d	S # t          $ r:}t          j        d
|            Y d}~|r|                                 dS dS d}~ww xY w# |r|                                 w w xY w)u   노트 수정Nz
title = %szcontent = %sFzUPDATE study_note SET z, z WHERE id = %sz[note] Updated note #Tz [note] update_study_note Error: r
   )r   r   r   r   r   appendr   joinr   tupler   r   r   r   r   )	r"   r   r   r   r   fieldsparamsr!   r   s	            r   update_study_noter4   |   s    D&<<);<<MM,'''MM%   MM.)))MM'""" 	  	JJLLLLL	 	 Ityy'8'8HHHgsE&MM***5G55666
  	JJLLLLL	 		    ;;;<<<uuu 	JJLLLLL	 		  	JJLLLL	s1   BE ,BE 
F!F8F FF F7c                     d}	 t          j        j        di t          }|                                }|                    d| f           |                                 |j        }|                                 t          j
        d|             |dk    |r|                                 S S # t          $ r:}t          j        d|            Y d}~|r|                                 dS dS d}~ww xY w# |r|                                 w w xY w)u   노트 삭제Nz$DELETE FROM study_note WHERE id = %sz[note] Deleted note #r   z [note] delete_study_note Error: Fr
   )r   r   r   r   r   r   r   rowcountr   r   r   r   r   )r"   r   r   affectedr   s        r   delete_study_noter8      s0   D&<<);<<=zJJJ?5G55666!|
  	JJLLLL		    ;;;<<<uuu 	JJLLLLL	 		  	JJLLLL	s*   BB- -
C17C,C4 ,C11C4 4D)NN)__doc__typingr   r   r   mysql.connectorr   app.core.configr   r   app.models.goalskill_moduler   r   strintr#   r)   r-   boolr4   r8   r
       r   <module>rB      s   
 ( ' ' ' ' ' ' ' ' '     6 6 6 6 6 6 6 6 9 9 9 9 9 9  D 7;-1 # c C &.sm%c]69   @ T
    0C HTN    & <@/3   s  8C=  '} 8<       Fs t      rA   