require('dotenv').config({ path: require('path').resolve(__dirname, '../.env') }); const mongoose = require('mongoose'); const MONGO_URI = process.env.MONGO_URI; if (!MONGO_URI) throw new Error('MONGO_URI not set'); const parseDate = (val) => { if (!val) return null; if (val instanceof Date) return val; const d = new Date(val); return Number.isNaN(d.getTime()) ? null : d; }; async function migrate() { await mongoose.connect(MONGO_URI); console.log('Connected to MongoDB'); const Announcement = require('../models/Announcement'); const Achievement = require('../models/Achievement'); for (const Model of [Announcement, Achievement]) { const docs = await Model.find({ date: { $type: 'string' } }).lean(); console.log(`${Model.modelName}: found ${docs.length} docs with string dates`); for (const doc of docs) { const parsed = parseDate(doc.date); await Model.updateOne({ _id: doc._id }, { $set: { date: parsed } }); } console.log(`${Model.modelName}: migration complete`); } await mongoose.disconnect(); console.log('Done'); } migrate().catch((err) => { console.error(err); process.exit(1); });