Files
nxxmdata/government-backend/models/index.js

100 lines
2.6 KiB
JavaScript
Raw Normal View History

/**
* 政府后端模型索引文件
* @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;