ALTER TABLE prestations
  ADD COLUMN IF NOT EXISTS categories TEXT[] NOT NULL DEFAULT '{}';

UPDATE prestations AS p
SET categories = CASE
  WHEN e.secteur = 'Institut de Beauté' THEN ARRAY['Beauté', 'Soin du visage', 'Manucure', 'Épilation']
  WHEN e.secteur = 'Coiffeurs' THEN ARRAY['Coiffure', 'Coupe', 'Balayage']
  WHEN e.secteur = 'Sport & Danse' THEN ARRAY['Sport', 'Coaching', 'Fitness', 'HIIT']
  WHEN e.secteur = 'Tatouage & Piercing' THEN ARRAY['Tatouage', 'Piercing', 'Body art']
  WHEN e.secteur = 'Bien-être du Corps & Esprit' THEN ARRAY['Yoga', 'Bien-être', 'Méditation', 'Relaxation']
  WHEN e.secteur IS NOT NULL AND btrim(e.secteur) <> '' THEN ARRAY[e.secteur]
  ELSE '{}'
END
FROM prestataires pr
LEFT JOIN entreprises e ON e.id = pr.entreprise_id
WHERE p.prestataire_id = pr.id
  AND (p.categories IS NULL OR cardinality(p.categories) = 0);

CREATE INDEX IF NOT EXISTS prestations_categories_gin_idx
  ON prestations
  USING gin (categories);
