forked from UKSOURCE/cms.hailearning.edu.vn
90 lines
2.2 KiB
JavaScript
90 lines
2.2 KiB
JavaScript
require("dotenv").config();
|
|
const fs = require("fs").promises;
|
|
const path = require("path");
|
|
const connectDB = require("../config/database");
|
|
const Safety = require("../models/safety");
|
|
const mongoose = require("mongoose");
|
|
|
|
/**
|
|
* Chuẩn hóa safety.json đúng theo safetySchema
|
|
*/
|
|
function transformSafety(data) {
|
|
return {
|
|
hero: {
|
|
banner: data?.hero?.banner || "",
|
|
title: data?.hero?.title || "",
|
|
},
|
|
|
|
approach: {
|
|
badge: data?.approach?.badge || "",
|
|
title: data?.approach?.title || "",
|
|
description: data?.approach?.description || "",
|
|
imgs: {
|
|
img1: data?.approach?.imgs?.img1 || "",
|
|
img2: data?.approach?.imgs?.img2 || "",
|
|
},
|
|
stats: {
|
|
count: data?.approach?.stats?.count || "",
|
|
label: data?.approach?.stats?.label || "",
|
|
avatars: Array.isArray(data?.approach?.stats?.avatars)
|
|
? data.approach.stats.avatars
|
|
: [],
|
|
},
|
|
features: Array.isArray(data?.approach?.features)
|
|
? data.approach.features
|
|
: [],
|
|
cards: Array.isArray(data?.approach?.cards)
|
|
? data.approach.cards
|
|
: [],
|
|
},
|
|
|
|
philosophy: {
|
|
title: data?.philosophy?.title || "",
|
|
subtitle: data?.philosophy?.subtitle || "",
|
|
cards: Array.isArray(data?.philosophy?.cards)
|
|
? data.philosophy.cards
|
|
: [],
|
|
},
|
|
|
|
security: {
|
|
title: data?.security?.title || "",
|
|
subtitle: data?.security?.subtitle || "",
|
|
cards: Array.isArray(data?.security?.cards)
|
|
? data.security.cards
|
|
: [],
|
|
},
|
|
|
|
updatedAt: new Date(),
|
|
};
|
|
}
|
|
|
|
/**
|
|
* MIGRATION
|
|
*/
|
|
async function migrate() {
|
|
try {
|
|
console.log("Starting migration: create_safety_table...");
|
|
await connectDB();
|
|
|
|
const safetyJsonPath = path.join(__dirname, "../data/safety.json");
|
|
const raw = await fs.readFile(safetyJsonPath, "utf8");
|
|
const source = JSON.parse(raw);
|
|
|
|
const doc = transformSafety(source);
|
|
|
|
await Safety.create(doc);
|
|
|
|
console.log("Migration create_safety_table completed successfully!");
|
|
|
|
await mongoose.disconnect();
|
|
process.exit(0);
|
|
} catch (error) {
|
|
console.error("Migration error:", error);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
if (require.main === module) migrate();
|
|
|
|
module.exports = { migrate };
|