-- =============================================
-- DIAGNOSTIC COMPLET - Problème Status
-- =============================================

USE tournament_db;

SELECT '================================' as '';
SELECT '🔍 DIAGNOSTIC STATUT PARTICIPANTS' as '';
SELECT '================================' as '';

-- 1. Structure actuelle de la colonne
SELECT '--- 1. DÉFINITION ACTUELLE ---' as '';
SELECT 
    COLUMN_NAME as 'Colonne',
    COLUMN_TYPE as 'Type',
    IS_NULLABLE as 'Nullable',
    COLUMN_DEFAULT as 'Défaut'
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = 'tournament_db' 
  AND TABLE_NAME = 'participants' 
  AND COLUMN_NAME = 'status';

-- 2. Valeurs uniques actuellement en base
SELECT '--- 2. VALEURS ACTUELLES EN BASE ---' as '';
SELECT DISTINCT 
    status as 'Statut trouvé',
    COUNT(*) as 'Nombre',
    HEX(status) as 'Hex (pour détecter caractères cachés)'
FROM participants
GROUP BY status
ORDER BY COUNT(*) DESC;

-- 3. Test des valeurs ENUM
SELECT '--- 3. TEST DES VALEURS ENUM ---' as '';
-- Créer une table temporaire pour tester
CREATE TEMPORARY TABLE test_enum (
    status ENUM('En lice', 'Éliminé', 'Liste d\'attente')
);

-- Tester chaque valeur
INSERT INTO test_enum (status) VALUES ('En lice');
INSERT INTO test_enum (status) VALUES ('Éliminé');
INSERT INTO test_enum (status) VALUES ('Liste d\'attente');

SELECT * FROM test_enum;
DROP TEMPORARY TABLE test_enum;

-- 4. Participants avec statuts problématiques
SELECT '--- 4. PARTICIPANTS AVEC STATUTS ANORMAUX ---' as '';
SELECT 
    id,
    prenom,
    nom,
    status,
    LENGTH(status) as 'Longueur',
    HEX(status) as 'Hex'
FROM participants
WHERE status NOT IN ('En lice', 'Éliminé', 'Liste d\'attente')
   OR status IS NULL;

-- 5. Vérifier les triggers
SELECT '--- 5. TRIGGERS ACTIFS ---' as '';
SELECT 
    TRIGGER_NAME as 'Trigger',
    EVENT_MANIPULATION as 'Événement',
    ACTION_TIMING as 'Timing'
FROM INFORMATION_SCHEMA.TRIGGERS
WHERE TRIGGER_SCHEMA = 'tournament_db'
  AND EVENT_OBJECT_TABLE = 'participants';

-- 6. Comparaison caractère par caractère
SELECT '--- 6. ANALYSE DES APOSTROPHES ---' as '';
SELECT 
    'Liste d\'attente' as 'Valeur SQL',
    HEX('Liste d\'attente') as 'Hex SQL',
    'Liste d\'attente' as 'Avec antislash',
    HEX('Liste d\'attente') as 'Hex antislash',
    'Liste d\'attente' as 'Apostrophe droite',
    HEX('Liste d\'attente') as 'Hex apostrophe droite';

-- 7. Recommandations
SELECT '================================' as '';
SELECT '📋 RECOMMANDATIONS' as '';
SELECT '================================' as '';

SELECT IF(
    (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS 
     WHERE TABLE_SCHEMA = 'tournament_db' 
       AND TABLE_NAME = 'participants' 
       AND COLUMN_NAME = 'status') = 'enum(\'En lice\',\'Éliminé\',\'Liste d\\\'attente\')',
    '✅ ENUM correctement configuré',
    '❌ ENUM à corriger - Exécutez FIX_STATUS_FINAL.sql'
) as 'Statut ENUM';

SELECT IF(
    (SELECT COUNT(*) FROM participants 
     WHERE status NOT IN ('En lice', 'Éliminé', 'Liste d\'attente') 
        OR status IS NULL) = 0,
    '✅ Toutes les données sont valides',
    '❌ Des données invalides existent - Correction nécessaire'
) as 'Statut Données';

SELECT '================================' as '';
SELECT 'FIN DU DIAGNOSTIC' as '';
SELECT '================================' as '';
