# from db import database
from fastapi import HTTPException
from db import database_demo

# -----------------------------------------------------------------
# 💡 [추가] 로봇(chat_history)용 DB 함수
# -----------------------------------------------------------------

async def save_robot_chat_message(session_id: str, role: str, content: str):
    """
    로봇의 대화(user 또는 ai)를 'chat_history' 테이블에 저장합니다.
    (기존 save_chat_message 함수와 유사)
    """
    try:
        query = """
            INSERT INTO chat_history (session_id, role, content, created_at)
            VALUES (:session_id, :role, :content, NOW())
            """
        await database_demo.execute(query, values={
            "session_id": session_id,
            "role": role,
            "content": content
        })
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))


async def get_robot_chat_history(session_id: str):
    """
    특정 'session_id'의 모든 대화 기록을 시간순으로 가져옵니다.
    (기존 get_chat_history 함수와 유사)
    """
    try:
        query = """
            SELECT role, content
            FROM chat_history
            WHERE session_id = :session_id
            ORDER BY created_at ASC
            """
        # 💡 GPT API가 {"role": "user", "content": "..."} 형식을 사용하므로
        #    이 쿼리 결과(List[Row])는 라우터에서 바로 변환하여 사용할 수 있습니다.
        return await database_demo.fetch_all(query, {"session_id": session_id})
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))
