/** * 数据库初始化脚本 * 直接使用 DatabaseProvider 进行迁移和种子数据操作 * 避免重复配置 */ import { createInterface } from 'readline' import DatabaseProvider from '../src/app/providers/DatabaseProvider.js' /** * 询问用户是否重置数据 * @returns {Promise} 用户选择结果 */ function askForReset() { return new Promise((resolve) => { const rl = createInterface({ input: process.stdin, output: process.stdout }) rl.question('是否重置数据?(y/N): ', (answer) => { rl.close() resolve(answer.trim().toLowerCase() === 'y') }) }) } /** * 主初始化函数 */ async function init() { try { console.log('🚀 开始数据库初始化...') console.log(`运行环境: ${typeof Bun !== 'undefined' ? 'Bun' : 'Node.js'}`) // 1. 初始化数据库连接 console.log('\n🔗 初始化数据库连接...') await DatabaseProvider.register() // 2. 运行数据库迁移 console.log('\n📦 运行数据库迁移...') await DatabaseProvider.runMigrations() console.log('✅ 数据库迁移完成') // 3. 询问是否重置数据 const shouldReset = await askForReset() if (shouldReset) { console.log('\n🌱 运行种子数据...') await DatabaseProvider.runSeeds() } else { console.log('⏭️ 已取消数据重置') } console.log('\n🎉 数据库初始化完成!') // 关闭数据库连接 await DatabaseProvider.close() process.exit(0) } catch (error) { console.error('\n❌ 数据库初始化失败:', error.message) console.error(error.stack) process.exit(1) } } // 运行初始化 init()