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 };