You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

69 lines
1.9 KiB

/**
* 数据库初始化脚本
* 直接使用 DatabaseProvider 进行迁移和种子数据操作
* 避免重复配置
*/
import { createInterface } from 'readline'
import DatabaseProvider from '../src/app/providers/DatabaseProvider.js'
/**
* 询问用户是否重置数据
* @returns {Promise<boolean>} 用户选择结果
*/
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()