Files
autoAiWorkSys/_script/sync_all_models.js
张成 5d7444cd65 1
2025-11-24 13:23:42 +08:00

79 lines
2.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const Framework = require('../framework/node-core-framework.js');
const frameworkConfig = require('../config/framework.config.js');
/**
* 同步所有模型到数据库
* 执行所有 model 的 sync() 操作
*/
async function syncAllModels() {
try {
console.log('开始同步所有模型到数据库...');
// 初始化框架
console.log('正在初始化框架...');
const framework = await Framework.init(frameworkConfig);
// 获取所有模型
const models = Framework.getModels();
if (!models) {
console.error('无法获取模型列表');
return;
}
console.log('找到以下模型:');
Object.keys(models).forEach(modelName => {
console.log(`- ${modelName}`);
});
// 同步所有模型
const syncPromises = Object.keys(models).map(async (modelName) => {
try {
const model = models[modelName];
console.log(`正在同步模型: ${modelName}`);
// 执行同步
await model.sync({ alter: true });
console.log(`${modelName} 同步完成`);
return { modelName, success: true };
} catch (error) {
console.error(`${modelName} 同步失败:`, error.message);
return { modelName, success: false, error: error.message };
}
});
// 等待所有同步操作完成
const results = await Promise.all(syncPromises);
// 统计结果
const successCount = results.filter(r => r.success).length;
const failCount = results.filter(r => !r.success).length;
console.log('\n=== 同步结果统计 ===');
console.log(`成功: ${successCount} 个模型`);
console.log(`失败: ${failCount} 个模型`);
if (failCount > 0) {
console.log('\n失败的模型:');
results.filter(r => !r.success).forEach(r => {
console.log(`- ${r.modelName}: ${r.error}`);
});
}
console.log('\n数据库同步操作完成');
} catch (error) {
console.error('同步过程中发生错误:', error);
}
}
// 执行同步
syncAllModels().then(() => {
console.log('脚本执行完成');
process.exit(0);
}).catch(error => {
console.error('脚本执行失败:', error);
process.exit(1);
});