78 lines
2.2 KiB
JavaScript
78 lines
2.2 KiB
JavaScript
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 });
|
||
|
||
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);
|
||
});
|