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,87 @@
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 };