-- Script pour diagnostiquer et corriger les problèmes d'index spatial

-- 1. Vérifier s'il y a des géométries vides
SELECT 'Géométries vides:' as diagnostic;
SELECT code, libelle
FROM x_departements
WHERE contour IS NOT NULL AND ST_IsEmpty(contour) = 1;

-- 2. Essayer de créer un index spatial sur une copie de la table pour tester
CREATE TABLE x_departements_test LIKE x_departements;

-- 3. Copier uniquement les départements métropolitains avec contours
INSERT INTO x_departements_test 
SELECT * FROM x_departements 
WHERE contour IS NOT NULL 
  AND code NOT IN ('20', '971', '972', '973', '974', '975', '976');

-- 4. Tenter de créer l'index spatial sur la table de test
ALTER TABLE x_departements_test ADD SPATIAL INDEX idx_contour_test (contour);

-- Si ça fonctionne, le problème vient des départements spécifiques
-- Si ça ne fonctionne pas, il y a un problème avec les données géométriques

-- 5. Alternative : recréer les géométries à partir du texte WKT
-- Cela peut corriger certains problèmes de format
UPDATE x_departements d
INNER JOIN x_departements_contours dc ON d.code = dc.code_dept
SET d.contour = ST_GeomFromText(ST_AsText(dc.contour))
WHERE dc.contour IS NOT NULL 
  AND d.code IN (SELECT code FROM x_departements WHERE contour IS NOT NULL LIMIT 1);

-- 6. Nettoyer
DROP TABLE IF EXISTS x_departements_test;

-- Note : Pour l'instant, l'index normal créé avec contour(32) permettra 
-- le fonctionnement de l'API, même si les performances seront moindres 
-- qu'avec un vrai index spatial.