# limpar_duplicados.py
# Este script analisa a tabela 'perguntas' e remove todas as entradas duplicadas,
# mantendo apenas a primeira ocorrência de cada pergunta (a com o ID mais baixo).

import mysql.connector

# --- CONFIGURAÇÃO DA BASE DE DADOS ---
# Certifique-se de que estas credenciais estão corretas.
db_config = {
    'host': '127.0.0.1',
    'user': 'teste_app',
    'password': 'N71j1ngl1c6n',
    'database': 'insutec_acesso'
}

def limpar_perguntas_duplicadas():
    """
    Encontra e remove perguntas com enunciados duplicados da base de dados.
    """
    try:
        print("A tentar ligar à base de dados 'insutec_acesso'...")
        conn = mysql.connector.connect(**db_config)
        cursor = conn.cursor(dictionary=True)
        print("Ligação bem-sucedida.")

        # 1. Encontrar todos os enunciados que têm duplicados e o ID do primeiro registo a manter.
        query_encontrar_duplicados = """
            SELECT enunciado, MIN(id) as id_para_manter, COUNT(*) as total
            FROM perguntas
            GROUP BY enunciado
            HAVING COUNT(*) > 1
        """
        cursor.execute(query_encontrar_duplicados)
        duplicados = cursor.fetchall()

        if not duplicados:
            print("\nAnálise concluída: Nenhuma pergunta repetida foi encontrada na base de dados.")
            return

        print(f"\nForam encontrados {len(duplicados)} enunciados de perguntas com repetições.")
        
        total_linhas_apagadas = 0

        # 2. Para cada enunciado duplicado, apagar todos os registos exceto o primeiro.
        for item in duplicados:
            enunciado = item['enunciado']
            id_para_manter = item['id_para_manter']
            
            query_apagar = "DELETE FROM perguntas WHERE enunciado = %s AND id > %s"
            
            # Usamos um novo cursor para a operação de apagar para não interferir com o loop
            delete_cursor = conn.cursor()
            delete_cursor.execute(query_apagar, (enunciado, id_para_manter))
            
            linhas_apagadas = delete_cursor.rowcount
            conn.commit()
            delete_cursor.close()
            
            if linhas_apagadas > 0:
                print(f"- '{enunciado[:50]}...': {linhas_apagadas} cópia(s) removida(s).")
                total_linhas_apagadas += linhas_apagadas

        print("\n--------------------------------------------------")
        print("Limpeza concluída com sucesso!")
        print(f"Total de registos duplicados removidos: {total_linhas_apagadas}")
        print("--------------------------------------------------")

    except mysql.connector.Error as err:
        print(f"\nERRO: Ocorreu um erro durante a operação: {err}")
    finally:
        if 'conn' in locals() and conn.is_connected():
            cursor.close()
            conn.close()
            print("Ligação à base de dados fechada.")

if __name__ == '__main__':
    limpar_perguntas_duplicadas()
