-- ─────────────────────────────────────────────────────────────────────────────
-- Correction Mojibake dans les tables Supabase
-- UTF-8 interprété Latin-1/Windows-1252 → chaînes correctes
-- À exécuter dans l'éditeur SQL Supabase (Settings → SQL Editor)
-- ─────────────────────────────────────────────────────────────────────────────

-- Fonction utilitaire : remplace toutes les séquences Mojibake dans un texte
CREATE OR REPLACE FUNCTION fix_encoding(t text) RETURNS text LANGUAGE sql IMMUTABLE AS $$
  SELECT
    replace(replace(replace(replace(replace(replace(replace(replace(
    replace(replace(replace(replace(replace(replace(replace(replace(
    replace(replace(replace(replace(replace(replace(replace(replace(
    replace(replace(replace(replace(replace(
    t,
    'â€"', '—'),  -- em dash
    'â€"', '–'),  -- en dash  (U+201C à la fin)
    'â€™', E'’'),  -- apostrophe courbe '
    'Ã‰', 'É'),
    'Ã©', 'é'),
    'Ã¨', 'è'),
    'Ãª', 'ê'),
    'Ã«', 'ë'),
    'Ã®', 'î'),
    'Ã¯', 'ï'),
    'Ã´', 'ô'),
    'Ã»', 'û'),
    'Ã¹', 'ù'),
    'Ã§', 'ç'),
    'Ã ', 'à'),
    'Ã¢', 'â'),
    'Ã¼', 'ü'),
    'Ã¶', 'ö'),
    'Ã†', 'Æ'),
    'Åœ', 'Œ'),
    'Å"', 'œ'),
    'Ã…', 'À'),
    'â€¦', '…'),
    'â„¢', '™'),
    'Â«', '«'),
    'Â»', '»'),
    'Â°', '°'),
    'Â²', '²'),
    'Â³', '³')
$$;

-- ─── vitrines ────────────────────────────────────────────────────────────────
UPDATE vitrines SET nom_equipe   = fix_encoding(nom_equipe)   WHERE nom_equipe   ~ '[ÃÅâ]';
UPDATE vitrines SET description  = fix_encoding(description)  WHERE description  ~ '[ÃÅâ]';
UPDATE vitrines SET lieu         = fix_encoding(lieu)         WHERE lieu         ~ '[ÃÅâ]';
UPDATE vitrines SET secteur      = fix_encoding(secteur)      WHERE secteur      ~ '[ÃÅâ]';

-- ─── entreprises ─────────────────────────────────────────────────────────────
UPDATE entreprises SET nom      = fix_encoding(nom)      WHERE nom      ~ '[ÃÅâ]';
UPDATE entreprises SET secteur  = fix_encoding(secteur)  WHERE secteur  ~ '[ÃÅâ]';
UPDATE entreprises SET adresse  = fix_encoding(adresse)  WHERE adresse  ~ '[ÃÅâ]';

-- ─── prestations ─────────────────────────────────────────────────────────────
UPDATE prestations SET titre       = fix_encoding(titre)       WHERE titre       ~ '[ÃÅâ]';
UPDATE prestations SET description = fix_encoding(description) WHERE description ~ '[ÃÅâ]';

-- categories est de type text[] — on corrige chaque élément du tableau
UPDATE prestations
SET categories = ARRAY(
  SELECT fix_encoding(unnested)
  FROM unnest(categories) AS unnested
)
WHERE array_to_string(categories, ',') ~ '[ÃÅâ]';

-- ─── votes / avis ────────────────────────────────────────────────────────────
UPDATE votes SET commentaire = fix_encoding(commentaire) WHERE commentaire ~ '[ÃÅâ]';

-- ─── utilisateurs ────────────────────────────────────────────────────────────
UPDATE utilisateurs SET first_name = fix_encoding(first_name) WHERE first_name ~ '[ÃÅâ]';
UPDATE utilisateurs SET last_name  = fix_encoding(last_name)  WHERE last_name  ~ '[ÃÅâ]';

-- ─── Nettoyage ────────────────────────────────────────────────────────────────
DROP FUNCTION fix_encoding(text);

-- Vérification rapide après correction
SELECT 'vitrines'    AS table_name, COUNT(*) AS lignes_restantes FROM vitrines    WHERE nom_equipe  ~ '[ÃÅâ]'
UNION ALL
SELECT 'prestations' AS table_name, COUNT(*) AS lignes_restantes FROM prestations WHERE titre       ~ '[ÃÅâ]'
UNION ALL
SELECT 'entreprises' AS table_name, COUNT(*) AS lignes_restantes FROM entreprises WHERE nom         ~ '[ÃÅâ]'
UNION ALL
SELECT 'votes'       AS table_name, COUNT(*) AS lignes_restantes FROM votes       WHERE commentaire ~ '[ÃÅâ]';
