/**
 * 模型导出模块（代理模式）
 * 从 Framework 动态获取已初始化的模型
 * 使用 Proxy 延迟获取，确保 Framework 已初始化
 */

const Sequelize = require("sequelize");
const Framework = require("../framework/node-core-framework.js");
const db = require("./db_proxy");

module.exports = new Proxy({}, {
  get(_, prop) {
    // 获取 Framework 初始化的模型
    const models = Framework.getModels();
    
    if (!models) {
      throw new Error('Framework not initialized. Please call Framework.init() first.');
    }
    
    // 特殊属性处理
    if (prop === 'Sequelize') {
      return Sequelize;
    }
    
    if (prop === 'op') {
      return Sequelize.Op;
    }
    
    if (prop === 'querySql') {
      return async (sql) => {
        return await db.sequelize.query(sql, { type: Sequelize.QueryTypes.SELECT });
      };
    }
    
    // 返回对应的模型
    return models[prop];
  }
});

