forked from UKSOURCE/cms.hailearning.edu.vn
first commit
This commit is contained in:
89
scripts/2025_12_03_154826_create_safety_table.js
Normal file
89
scripts/2025_12_03_154826_create_safety_table.js
Normal file
@@ -0,0 +1,89 @@
|
||||
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 };
|
||||
Reference in New Issue
Block a user