Checkpoint: Simplification de la classification IA dans l'onglet Veille Stratégique : suppression de la catégorie médico-sociale (Handicap, PA, Enfance, etc.), remplacement de "Générale" par "Informationnelle", classification IA réduite au seul type de veille (réglementaire/concurrentielle/technologique/informationnelle). Migration BDD des données generale → informationnelle. 0 erreur TypeScript, 21 tests passés.
This commit is contained in:
88
scripts/migrate-generale-to-informationnelle.mjs
Normal file
88
scripts/migrate-generale-to-informationnelle.mjs
Normal file
@@ -0,0 +1,88 @@
|
||||
/**
|
||||
* 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();
|
||||
}
|
||||
Reference in New Issue
Block a user