89 lines
3.4 KiB
JavaScript
89 lines
3.4 KiB
JavaScript
/**
|
|
* 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();
|
|
}
|