// routes.js
const express = require('express');
const router = express.Router();

// 虚拟沙盒
const vm = require('node:vm');
global.Parse = {
    title:"Parse"
}
const envContext = {
    Parse:global.Parse,
    module:module, // 允许代码段编写模块
}


// POST 路由处理
/**
 * @param code 代码
 */
router.post('/func', async (req, res) => {
    let { code,func,params } = req.body;

    // 加载模块
    console.log(req.body)
    let cloudModule = loadModule(code);

    // 调用 exampleFunc 方法
    let result
    
    try {
        console.log(cloudModule,result)
        result = await cloudModule[func](params); // 输出: Hello from exampleFunc!
        res.json({
            code:200,
            data:result
        });
    } catch (error) {
        res.status(500).json({ 
            code:500,
            error:error
        });
    }
});



function loadModule(code) {
    // 使用 vm.runInNewContext 执行代码
    vm.runInNewContext(code, envContext);
    // 返回上下文中的模块对象
    return envContext.module.exports;
}

module.exports = router;