from app.core.config import A_DB_CONFIG, logger
import mysql.connector


def save_company_info(
    session_id: str,
    eligibility: str | None,
    skills_and_experience: str | None,
    welcome_personality: str | None,
    key_information: str | None,
):
    """
    같은 session_id면 기존 행 업데이트, 없으면 INSERT.
    eligibility: 応募条件, skills_and_experience: 活かせる経験と能力,
    welcome_personality: 歓迎する人物像, key_information: 重要事項
    """
    try:
        conn = mysql.connector.connect(**A_DB_CONFIG)
        cursor = conn.cursor()
        args = (
            eligibility or None,
            skills_and_experience or None,
            welcome_personality or None,
            key_information or None,
            session_id,
        )
        update_sql = """
            UPDATE company_info
            SET eligibility = %s, skills_and_experience = %s, welcome_personality = %s, key_information = %s, updated_at = NOW()
            WHERE session_id = %s
        """
        cursor.execute(update_sql, args)
        if cursor.rowcount == 0:
            insert_sql = """
                INSERT INTO company_info
                (session_id, eligibility, skills_and_experience, welcome_personality, key_information)
                VALUES (%s, %s, %s, %s, %s)
            """
            cursor.execute(
                insert_sql,
                (
                    session_id,
                    eligibility or None,
                    skills_and_experience or None,
                    welcome_personality or None,
                    key_information or None,
                ),
            )
            logger.info(f"Company info inserted for session: {session_id}")
        else:
            logger.info(f"Company info updated for session: {session_id}")
        conn.commit()
        cursor.close()
        conn.close()
    except Exception as e:
        logger.error(f"Company info save error: {e}")
        raise


def get_company_info(session_id: str) -> dict | None:
    """session_id로 저장된 회사 정보 1건 조회. 없으면 None."""
    try:
        conn = mysql.connector.connect(**A_DB_CONFIG)
        cursor = conn.cursor(dictionary=True)
        sql = """
            SELECT eligibility, skills_and_experience, welcome_personality, key_information, created_at, updated_at
            FROM company_info
            WHERE session_id = %s
            ORDER BY updated_at DESC
            LIMIT 1
        """
        cursor.execute(sql, (session_id,))
        row = cursor.fetchone()
        cursor.close()
        conn.close()
        return row
    except Exception as e:
        logger.error(f"Company info get error: {e}")
        raise
