import Dexie from "dexie" import { db } from "./db" /** * 检查数据库版本并升级 */ export async function checkAndUpgradeDatabase(): Promise { 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 { 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 } }