73 lines
2.2 KiB
SQL
73 lines
2.2 KiB
SQL
-- 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;
|