74 lines
2.0 KiB
JavaScript
74 lines
2.0 KiB
JavaScript
const admin = require("firebase-admin");
|
||
const serviceAccount = require("./serviceAccountKey.json");
|
||
|
||
// Initialiser Firebase Admin
|
||
admin.initializeApp({
|
||
credential: admin.credential.cert(serviceAccount),
|
||
});
|
||
|
||
const db = admin.firestore();
|
||
|
||
async function migrateEventDates() {
|
||
console.log("🔧 Migration: Correction du fuseau horaire des événements");
|
||
console.log("================================================\n");
|
||
|
||
try {
|
||
const eventsSnapshot = await db.collection("events").get();
|
||
console.log(`📦 Total d'événements: ${eventsSnapshot.size}`);
|
||
|
||
let updatedCount = 0;
|
||
const batch = db.batch();
|
||
|
||
for (const doc of eventsSnapshot.docs) {
|
||
const data = doc.data();
|
||
let updated = false;
|
||
const updates = {};
|
||
|
||
const fixDate = (timestamp) => {
|
||
if (!timestamp) return null;
|
||
const oldDate = timestamp.toDate();
|
||
|
||
// On prend les composants UTC (qui étaient en fait l'heure locale mal enregistrée)
|
||
// et on crée une vraie date locale avec
|
||
const newDate = new Date(
|
||
oldDate.getUTCFullYear(),
|
||
oldDate.getUTCMonth(),
|
||
oldDate.getUTCDate(),
|
||
oldDate.getUTCHours(),
|
||
oldDate.getUTCMinutes(),
|
||
oldDate.getUTCSeconds()
|
||
);
|
||
|
||
return admin.firestore.Timestamp.fromDate(newDate);
|
||
};
|
||
|
||
if (data.StartDateTime) {
|
||
updates.StartDateTime = fixDate(data.StartDateTime);
|
||
updated = true;
|
||
}
|
||
|
||
if (data.EndDateTime) {
|
||
updates.EndDateTime = fixDate(data.EndDateTime);
|
||
updated = true;
|
||
}
|
||
|
||
if (updated) {
|
||
batch.update(doc.ref, updates);
|
||
updatedCount++;
|
||
}
|
||
}
|
||
|
||
if (updatedCount > 0) {
|
||
await batch.commit();
|
||
console.log(`✅ ${updatedCount} événements corrigés avec succès !`);
|
||
} else {
|
||
console.log("ℹ️ Aucun événement à corriger.");
|
||
}
|
||
} catch (error) {
|
||
console.error("❌ Erreur lors de la migration:", error);
|
||
process.exit(1);
|
||
}
|
||
}
|
||
|
||
migrateEventDates().then(() => process.exit(0));
|