require("dotenv").config(); const fs = require("fs").promises; const path = require("path"); const connectDB = require("../config/database"); const AboutUs = require("../models/aboutUs"); /** * Normalize the provided aboutUs.json into the AboutUs model shape. */ function transformAboutUs(source) { const hero = { banner: source?.hero?.banner || "", title: source?.hero?.title || "", breadcrumb: source?.hero?.breadcrumb || "", }; // Introduce section const introduce = { header: source?.introduce?.header || {}, services: Array.isArray(source?.introduce?.services) ? source.introduce.services : [], }; // Stats const stats = Array.isArray(source?.stats) ? source.stats : []; // Features: header + items const features = { header: source?.features?.header || {}, items: Array.isArray(source?.features?.items) ? source.features.items : [], }; // Activities const activities = source?.activities || {}; // Newsletter const newsletter = source?.newsletter || {}; // Events: header + items const events = { header: source?.events?.header || {}, items: Array.isArray(source?.events?.items) ? source.events.items : [], }; return { hero, introduce, stats, features, activities, newsletter, events, updatedAt: new Date(), }; } /** * Migration: aboutus */ async function migrate() { try { await connectDB(); const filePath = path.join(__dirname, "..", "data", "aboutUs.json"); const raw = await fs.readFile(filePath, "utf8"); const source = JSON.parse(raw); const doc = transformAboutUs(source); await AboutUs.create(doc); const mongoose = require('mongoose'); await mongoose.disconnect(); process.exit(0); } catch (error) { console.error('Migration error:', error); process.exit(1); } } // Chạy migration nếu được gọi trực tiếp if (require.main === module) { migrate(); } module.exports = { migrate };