tinfo-web-server / scripts /migrateDatesToDate.js
Faridaqurr
initial backend
e8c33fa
Raw
History Blame Contribute Delete
1.16 kB
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); });