forked from UKSOURCE/cms.hailearning.edu.vn
add api headermenu and crud management
This commit is contained in:
69
scripts/migrate-header-menu.js
Normal file
69
scripts/migrate-header-menu.js
Normal file
@@ -0,0 +1,69 @@
|
||||
const mongoose = require('mongoose');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const dotenv = require('dotenv');
|
||||
const HeaderMenu = require('../models/HeaderMenu');
|
||||
|
||||
dotenv.config();
|
||||
|
||||
const MONGODB_URI = process.env.MONGODB_URI || 'mongodb://localhost:27017/SIMS';
|
||||
|
||||
async function connectDB() {
|
||||
try {
|
||||
await mongoose.connect(MONGODB_URI);
|
||||
console.log('✅ MongoDB Connected for Migration');
|
||||
} catch (err) {
|
||||
console.error('❌ MongoDB Connection Error:', err);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
const processMenuItems = async (items, parentId = null) => {
|
||||
for (const item of items) {
|
||||
console.log(` > Importing: ${item.label}`);
|
||||
|
||||
const menuDoc = {
|
||||
title: item.label,
|
||||
slug: item.slug,
|
||||
url: item.href,
|
||||
parentId: parentId,
|
||||
order: item.order || 0,
|
||||
status: item.isActive === false ? "inactive" : "active",
|
||||
type: item.type === "external" ? "external" : "internal"
|
||||
};
|
||||
|
||||
const createdItem = await HeaderMenu.create(menuDoc);
|
||||
|
||||
if (item.children && item.children.length > 0) {
|
||||
await processMenuItems(item.children, createdItem._id);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
async function migrate() {
|
||||
await connectDB();
|
||||
|
||||
try {
|
||||
console.log('--- Starting Header Menu Migration ---');
|
||||
|
||||
// 1. Clear existing menu items
|
||||
await HeaderMenu.deleteMany({});
|
||||
console.log('🗑️ Cleared existing HeaderMenu collection');
|
||||
|
||||
// 2. Read JSON data
|
||||
const dataPath = path.join(__dirname, '../data/header-menu.json');
|
||||
const fileData = fs.readFileSync(dataPath, 'utf8');
|
||||
const menuItems = JSON.parse(fileData);
|
||||
|
||||
// 3. Recursive import
|
||||
await processMenuItems(menuItems);
|
||||
|
||||
console.log('--- Migration Completed Successfully ---');
|
||||
process.exit(0);
|
||||
} catch (error) {
|
||||
console.error('❌ Migration Failed:', error);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
migrate();
|
||||
Reference in New Issue
Block a user