const mongoose = require("mongoose");
const dotenv = require("dotenv");
const fs = require("fs");
const path = require("path");

// Load environment variables
dotenv.config();

const AboutUs = require("../models/aboutUs");

const seedAbout = async () => {
    try {
        console.log("🚀 Starting About section seeding...");

        // 1. Connect to MongoDB
        if (!process.env.MONGODB_URI) {
            throw new Error("MONGODB_URI is not defined in environment variables");
        }
        await mongoose.connect(process.env.MONGODB_URI);
        console.log("✅ MongoDB Connected");

        // 2. Read about.json (Single Source of Truth)
        const jsonPath = path.join(__dirname, "../data/about.json");
        if (!fs.existsSync(jsonPath)) {
            throw new Error(`Source about.json not found at: ${jsonPath}`);
        }

        const rawData = fs.readFileSync(jsonPath, "utf8");
        const jsonData = JSON.parse(rawData);
        console.log("✅ Read data/about.json successfully");

        // 3. Upsert logic (Singleton pattern)
        // We look for any existing document and update it, or create a new one if none exists.
        await AboutUs.findOneAndUpdate(
            {}, 
            jsonData, 
            { upsert: true, new: true, setDefaultsOnInsert: true }
        );
        
        console.log("✅ Successfully seeded about.json data to MongoDB (Upserted)");

    } catch (error) {
        console.error("❌ Seeding failed:", error.message);
    } finally {
        // 4. Close connection
        await mongoose.connection.close();
        console.log("👋 Database connection closed");
        process.exit(0);
    }
};

seedAbout();
