mirror of
https://github.com/hellodigua/ChatLab.git
synced 2026-05-06 21:16:10 +08:00
fix(database): skip non-chat sqlite files in migration and session scan
This commit is contained in:
@@ -411,6 +411,15 @@ export function checkMigrationNeeded(): {
|
||||
const db = new Database(dbPath, { readonly: true })
|
||||
db.pragma('journal_mode = WAL')
|
||||
|
||||
// 仅迁移聊天会话数据库,跳过其他业务库(如 AI 会话索引库)
|
||||
const tables = db.prepare("SELECT name FROM sqlite_master WHERE type='table'").all() as Array<{ name: string }>
|
||||
const tableSet = new Set(tables.map((t) => t.name))
|
||||
const isChatSessionDb = tableSet.has('meta') && tableSet.has('member') && tableSet.has('message')
|
||||
if (!isChatSessionDb) {
|
||||
db.close()
|
||||
continue
|
||||
}
|
||||
|
||||
// 获取当前 schema_version
|
||||
const metaTableInfo = db.prepare('PRAGMA table_info(meta)').all() as Array<{ name: string }>
|
||||
const hasVersionColumn = metaTableInfo.some((col) => col.name === 'schema_version')
|
||||
|
||||
@@ -489,6 +489,22 @@ export function getAllSessions(): any[] {
|
||||
const db = new Database(dbPath)
|
||||
db.pragma('journal_mode = WAL')
|
||||
|
||||
// 跳过非聊天会话数据库(例如内部索引库)
|
||||
const hasChatMeta = db
|
||||
.prepare("SELECT 1 as ok FROM sqlite_master WHERE type='table' AND name='meta' LIMIT 1")
|
||||
.get() as { ok: number } | undefined
|
||||
const hasMemberTable = db
|
||||
.prepare("SELECT 1 as ok FROM sqlite_master WHERE type='table' AND name='member' LIMIT 1")
|
||||
.get() as { ok: number } | undefined
|
||||
const hasMessageTable = db
|
||||
.prepare("SELECT 1 as ok FROM sqlite_master WHERE type='table' AND name='message' LIMIT 1")
|
||||
.get() as { ok: number } | undefined
|
||||
|
||||
if (!hasChatMeta || !hasMemberTable || !hasMessageTable) {
|
||||
db.close()
|
||||
continue
|
||||
}
|
||||
|
||||
const meta = db.prepare('SELECT * FROM meta LIMIT 1').get() as DbMeta | undefined
|
||||
|
||||
if (meta) {
|
||||
|
||||
Reference in New Issue
Block a user