forked from UKSOURCE/cms.hailearning.edu.vn
88 lines
2.0 KiB
JavaScript
88 lines
2.0 KiB
JavaScript
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 };
|