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
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()
|