/** * 政府后端模型索引文件 * @file index.js * @description 导出所有模型并建立关联关系 */ const { sequelize } = require('../config/database'); // 导入所有模型 const User = require('./User'); const AdminStaff = require('./AdminStaff'); const Department = require('./Department'); const Position = require('./Position'); const Farmer = require('./Farmer'); const HarmlessPlace = require('./HarmlessPlace'); const HarmlessRegistration = require('./HarmlessRegistration'); const Material = require('./Material'); const Slaughterhouse = require('./Slaughterhouse'); const EpidemicAgency = require('./EpidemicAgency'); const SmartCollar = require('./SmartCollar'); const SmartEarmark = require('./SmartEarmark'); const SmartHost = require('./SmartHost'); const WarehouseTransaction = require('./WarehouseTransaction'); // 初始化所有模型 const initModels = () => { try { // 处理直接导出的模型 if (User && typeof User !== 'function') { // User模型已经直接导出,不需要额外处理 } // 处理需要sequelize参数的模型 const modelsToInit = [ AdminStaff, Department, Position, Farmer, HarmlessPlace, HarmlessRegistration, Material, Slaughterhouse, EpidemicAgency, SmartCollar, SmartEarmark, SmartHost, WarehouseTransaction ]; // 初始化模型 modelsToInit.forEach(modelFactory => { if (typeof modelFactory === 'function') { // 调用函数获取模型实例 const model = modelFactory(sequelize); // 将初始化后的模型赋值回原来的变量 Object.assign(module.exports, { [model.name]: model }); } }); console.log('✅ 所有政府后端模型初始化完成'); } catch (error) { console.error('❌ 政府后端模型初始化失败:', error); } }; // 初始化模型 initModels(); // 导出sequelize和所有模型 module.exports = { sequelize, User, AdminStaff, Department, Position, Farmer, HarmlessPlace, HarmlessRegistration, Material, Slaughterhouse, EpidemicAgency, SmartCollar, SmartEarmark, SmartHost, WarehouseTransaction }; // 同步所有模型到数据库(可选) const syncModels = async (options = {}) => { try { await sequelize.sync(options); console.log('✅ 政府后端所有模型已同步到数据库'); return true; } catch (error) { console.error('❌ 政府后端模型同步失败:', error); return false; } }; // 添加syncModels到导出 module.exports.syncModels = syncModels;