-- Migration pour ajouter la colonne importance aux skills
-- Compatible avec les bases existantes

-- Étape 1: Vérifier si la colonne existe déjà
DO $$
BEGIN
    IF NOT EXISTS (
        SELECT 1 FROM information_schema.columns 
        WHERE table_name = 'skills' AND column_name = 'importance'
    ) THEN
        -- Ajouter la colonne importance
        ALTER TABLE skills 
        ADD COLUMN importance VARCHAR(20) DEFAULT 'standard';
        
        -- Ajouter la contrainte CHECK
        ALTER TABLE skills 
        ADD CONSTRAINT skills_importance_check 
        CHECK (importance IN ('incontournable', 'majeure', 'standard'));
        
        RAISE NOTICE 'Colonne importance ajoutée avec succès';
    ELSE
        RAISE NOTICE 'Colonne importance existe déjà';
    END IF;
END $$;

-- Étape 2: Mettre à jour les technologies incontournables
UPDATE skills 
SET importance = 'incontournable' 
WHERE name IN (
  'React', 'TypeScript', 'JavaScript', 'Git', 'HTML', 'CSS',
  'Node.js', 'Python', 'SQL', 'HTTP', 'REST API', 'JSON',
  'GitHub', 'npm', 'yarn', 'package.json'
);

-- Étape 3: Mettre à jour les technologies majeures
UPDATE skills 
SET importance = 'majeure' 
WHERE name IN (
  'Next.js', 'Vue.js', 'Angular', 'Docker', 'Kubernetes',
  'AWS', 'Azure', 'Google Cloud', 'MongoDB', 'PostgreSQL',
  'Redis', 'GraphQL', 'Webpack', 'Vite', 'Jest', 'Cypress',
  'Tailwind CSS', 'Sass', 'Less', 'Redux', 'Zustand',
  'Prisma', 'TypeORM', 'Sequelize', 'Express.js', 'Fastify'
);

-- Étape 4: Créer l'index s'il n'existe pas
DO $$
BEGIN
    IF NOT EXISTS (
        SELECT 1 FROM pg_indexes 
        WHERE tablename = 'skills' AND indexname = 'idx_skills_importance'
    ) THEN
        CREATE INDEX idx_skills_importance ON skills(importance);
        RAISE NOTICE 'Index idx_skills_importance créé avec succès';
    ELSE
        RAISE NOTICE 'Index idx_skills_importance existe déjà';
    END IF;
END $$;

-- Étape 5: Vérification finale
SELECT 
  importance,
  COUNT(*) as count,
  STRING_AGG(name, ', ' ORDER BY name) as examples
FROM skills 
GROUP BY importance 
ORDER BY 
  CASE importance 
    WHEN 'incontournable' THEN 1 
    WHEN 'majeure' THEN 2 
    WHEN 'standard' THEN 3 
  END;
