first commit

This commit is contained in:
r2xrzh9q2z-lab
2026-02-02 11:07:09 +07:00
commit d1b931d547
286 changed files with 53992 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
require('dotenv').config();
const connectDB = require('../config/database');
/**
* Migration: migrate_menu_header_ggcamp
* Created: 21:40:38 11/12/2025
*/
async function migrate() {
try {
// Kết nối database
await connectDB();
console.log('Starting migration: migrate_menu_header_ggcamp...');
const mongoose = require('mongoose');
const fs = require('fs').promises;
const path = require('path');
const Menu = require('../models/menuHeader');
// Xóa tất cả dữ liệu menu cũ
await Menu.deleteMany({});
// Đọc JSON file
const jsonPath = path.join(__dirname, '../data/menu-header.json');
const jsonData = JSON.parse(await fs.readFile(jsonPath, 'utf8'));
// Tạo menu items (đơn giản, không có fetch/programmes)
for (const menuData of jsonData.menus) {
// Chỉ giữ lại các field cần thiết: menuid, parent, title, url, order, type
const menuItem = {
menuid: menuData.menuid,
parent: menuData.parent || null,
title: menuData.title,
url: menuData.url,
order: menuData.order || 0,
type: menuData.type || 'static',
fetch: false, // Không dùng fetch
isActive: true // Mặc định active
};
await Menu.create(menuItem);
}
console.log('✅ Menu header migration completed successfully!');
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 };