/** * Script de migration : generale → informationnelle * * Étapes : * 1. Élargir l'enum typeVeille pour inclure 'informationnelle' (en plus de 'generale') * 2. Mettre à jour les données existantes (generale → informationnelle) * 3. Réduire l'enum pour supprimer 'generale' * 4. Même chose pour defaultTypeVeille dans rss_feeds */ import mysql from "mysql2/promise"; import { readFileSync } from "fs"; import { config } from "dotenv"; config(); const DATABASE_URL = process.env.DATABASE_URL; if (!DATABASE_URL) { console.error("DATABASE_URL non définie"); process.exit(1); } // Extraire les paramètres de connexion depuis l'URL const url = new URL(DATABASE_URL); const sslParam = url.searchParams.get("ssl"); const sslConfig = sslParam ? JSON.parse(sslParam) : undefined; const connection = await mysql.createConnection({ host: url.hostname, port: parseInt(url.port || "3306"), user: url.username, password: url.password, database: url.pathname.slice(1), ssl: sslConfig, }); console.log("Connexion BDD établie"); try { // Étape 1 : Élargir l'enum veille_items.typeVeille console.log("1. Élargissement de l'enum veille_items.typeVeille..."); await connection.execute( `ALTER TABLE veille_items MODIFY COLUMN typeVeille ENUM('reglementaire','concurrentielle','technologique','generale','informationnelle') NOT NULL` ); console.log(" ✓ Enum élargi"); // Étape 2 : Migrer les données veille_items console.log("2. Migration des données veille_items (generale → informationnelle)..."); const [result1] = await connection.execute( `UPDATE veille_items SET typeVeille = 'informationnelle' WHERE typeVeille = 'generale'` ); console.log(` ✓ ${result1.affectedRows} lignes mises à jour`); // Étape 3 : Réduire l'enum veille_items.typeVeille (supprimer 'generale') console.log("3. Réduction de l'enum veille_items.typeVeille (suppression de 'generale')..."); await connection.execute( `ALTER TABLE veille_items MODIFY COLUMN typeVeille ENUM('reglementaire','concurrentielle','technologique','informationnelle') NOT NULL` ); console.log(" ✓ Enum réduit"); // Étape 4 : Élargir l'enum rss_feeds.defaultTypeVeille console.log("4. Élargissement de l'enum rss_feeds.defaultTypeVeille..."); await connection.execute( `ALTER TABLE rss_feeds MODIFY COLUMN defaultTypeVeille ENUM('reglementaire','concurrentielle','technologique','generale','informationnelle')` ); console.log(" ✓ Enum élargi"); // Étape 5 : Migrer les données rss_feeds console.log("5. Migration des données rss_feeds (generale → informationnelle)..."); const [result2] = await connection.execute( `UPDATE rss_feeds SET defaultTypeVeille = 'informationnelle' WHERE defaultTypeVeille = 'generale'` ); console.log(` ✓ ${result2.affectedRows} lignes mises à jour`); // Étape 6 : Réduire l'enum rss_feeds.defaultTypeVeille (supprimer 'generale') console.log("6. Réduction de l'enum rss_feeds.defaultTypeVeille (suppression de 'generale')..."); await connection.execute( `ALTER TABLE rss_feeds MODIFY COLUMN defaultTypeVeille ENUM('reglementaire','concurrentielle','technologique','informationnelle')` ); console.log(" ✓ Enum réduit"); console.log("\n✅ Migration terminée avec succès !"); } catch (err) { console.error("❌ Erreur de migration :", err.message); process.exit(1); } finally { await connection.end(); }