0.0.0.5
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
import Dexie from "dexie"
|
||||
import { db } from "./db"
|
||||
|
||||
/**
|
||||
* 检查数据库版本并升级
|
||||
*/
|
||||
export async function checkAndUpgradeDatabase(): Promise<boolean> {
|
||||
try {
|
||||
// 检查 activityLogs 表是否存在
|
||||
const tables = db.tables.map(t => t.name)
|
||||
|
||||
if (!tables.includes("activityLogs")) {
|
||||
console.log("检测到需要升级数据库...")
|
||||
|
||||
// 关闭当前连接
|
||||
db.close()
|
||||
|
||||
// 删除旧数据库(注意:这会清除所有数据)
|
||||
// 在生产环境中,应该做数据迁移而不是删除
|
||||
await Dexie.delete("FamilyTreeDB")
|
||||
|
||||
// 重新打开数据库(会自动创建最新版本)
|
||||
await db.open()
|
||||
|
||||
console.log("数据库升级完成")
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
} catch (error) {
|
||||
console.error("数据库升级失败:", error)
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 手动升级数据库(保留数据)
|
||||
*/
|
||||
export async function upgradeDatabase(): Promise<void> {
|
||||
try {
|
||||
// 1. 备份现有数据
|
||||
const members = await db.members.toArray()
|
||||
const settings = await db.settings.toArray()
|
||||
const images = await db.images.toArray()
|
||||
|
||||
console.log("备份数据:", { members: members.length, settings: settings.length, images: images.length })
|
||||
|
||||
// 2. 关闭并删除数据库
|
||||
db.close()
|
||||
await Dexie.delete("FamilyTreeDB")
|
||||
|
||||
// 3. 重新打开(会创建新版本)
|
||||
await db.open()
|
||||
|
||||
// 4. 恢复数据
|
||||
if (members.length > 0) {
|
||||
await db.members.bulkAdd(members)
|
||||
}
|
||||
if (settings.length > 0) {
|
||||
await db.settings.bulkAdd(settings)
|
||||
}
|
||||
if (images.length > 0) {
|
||||
await db.images.bulkAdd(images)
|
||||
}
|
||||
|
||||
console.log("数据库升级完成,数据已恢复")
|
||||
} catch (error) {
|
||||
console.error("数据库升级失败:", error)
|
||||
throw error
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user