require('dotenv').config(); const fs = require('fs').promises; const path = require('path'); const mongoose = require('mongoose'); const connectDB = require('../config/database'); const Programme = require('../models/programme'); async function validateProgrammeData(dataArray) { if (!Array.isArray(dataArray)) { throw new Error('Data must be an array of programme objects'); } if (dataArray.length === 0) { throw new Error('Programme array cannot be empty'); } for (const item of dataArray) { if (!item.id || !item.title || !item.level) { throw new Error(`Programme is missing required fields (id, title, level). Error at id: ${item.id}`); } } } async function migrateProgrammeData() { try { await connectDB(); console.log('Đã kết nối đến MongoDB...'); await Programme.deleteMany({}); console.log('Đã xóa dữ liệu Programme cũ'); const programmesData = JSON.parse( await fs.readFile(path.join(__dirname, '../data/programmes.json'), 'utf8') ); await validateProgrammeData(programmesData); const dataWithTimestamps = programmesData.map(item => ({ ...item, updatedAt: new Date() })); await Programme.insertMany(dataWithTimestamps); console.log(`✓ Migrate dữ liệu Programmes thành công (${dataWithTimestamps.length} items)!`); process.exit(0); } catch (error) { console.error('Lỗi:', error.message); process.exit(1); } } migrateProgrammeData();