# app/models/mbti_module.py

import mysql.connector
from app.core.config import MBTI_DB_CONFIG

def insert_chat_log(session_id, sender, message):
    """
    단순 대화 로그를 chat_MBTI_jp 테이블에 저장
    """
    conn = None
    try:
        conn = mysql.connector.connect(**MBTI_DB_CONFIG)
        cursor = conn.cursor()
        
        sql = "INSERT INTO chat_MBTI_jp (session_id, sender, message) VALUES (%s, %s, %s)"
        cursor.execute(sql, (session_id, sender, message))
        
        conn.commit()
    except Exception as e:
        raise e
    finally:
        if conn:
            conn.close()

def save_mbti_result_transaction(session_id, system_msg, mbti_type, scores_json):
    """
    진단 완료 시 트랜잭션 처리:
    1. chat_MBTI_jp에 완료 메시지 저장
    2. mbti_results에 분석 결과 저장
    """
    conn = None
    try:
        conn = mysql.connector.connect(**MBTI_DB_CONFIG)
        conn.start_transaction() # 트랜잭션 시작
        cursor = conn.cursor()

        # 1. 채팅 로그 저장 (시스템 메시지)
        sql_chat = "INSERT INTO chat_MBTI_jp (session_id, sender, message) VALUES (%s, %s, %s)"
        cursor.execute(sql_chat, (session_id, 'system', system_msg))

        # 2. 결과 데이터 저장
        sql_result = "INSERT INTO mbti_results (session_id, mbti_type, scores) VALUES (%s, %s, %s)"
        cursor.execute(sql_result, (session_id, mbti_type, scores_json))

        conn.commit() # 둘 다 성공해야 저장
    except Exception as e:
        if conn:
            conn.rollback() # 하나라도 실패하면 취소
        raise e
    finally:
        if conn:
            conn.close()