const mongoose = require('mongoose');
const fs = require('fs');
const path = require('path');
const connectDB = require('../config/db');
const Scene = require('../models/Scene');
const Asset = require('../models/Asset');

const reset = async () => {
    try {
        console.log('--- Bắt đầu quá trình Reset Dữ liệu ---');

        // 1. Kết nối Database
        await connectDB();

        // 2. Xóa bản ghi trong Database
        console.log('1. Đang xóa dữ liệu trong MongoDB...');
        const deletedScenes = await Scene.deleteMany({});
        const deletedAssets = await Asset.deleteMany({});
        console.log(`- Đã xóa ${deletedScenes.deletedCount} scenes.`);
        console.log(`- Đã xóa ${deletedAssets.deletedCount} assets.`);

        // 3. Dọn dẹp tệp tin vật lý
        const uploadDir = path.join(__dirname, '../uploads');
        const tempDir = path.join(uploadDir, 'temp');

        console.log('2. Đang dọn dẹp thư mục uploads...');
        const directories = [uploadDir, tempDir];

        directories.forEach(dir => {
            if (fs.existsSync(dir)) {
                const files = fs.readdirSync(dir);
                for (const file of files) {
                    const fullPath = path.join(dir, file);
                    // Chỉ xóa file, không xóa thư mục (như temp) và tránh xóa file ẩn/cấu hình
                    if (fs.lstatSync(fullPath).isFile() && !file.startsWith('.')) {
                        fs.unlinkSync(fullPath);
                    }
                }
            }
        });
        console.log('--- Hoàn tất reset hệ thống! ---');
        
        // Đóng kết nối
        mongoose.connection.close();
        process.exit(0);
    } catch (err) {
        console.error('Lỗi nghiêm trọng trong quá trình reset:', err);
        mongoose.connection.close();
        process.exit(1);
    }
};

reset();