import { db, type RecentFile } from './schema' import { logError } from '../lib/errorHandler' export const recentFilesRepository = { async add(filePath: string): Promise { try { const existing: RecentFile | undefined = await db.recentFiles.where('filePath').equals(filePath).first() if (existing) { await db.recentFiles.update(existing.id!, { lastOpened: Date.now() }) } else { await db.recentFiles.add({ filePath, lastOpened: Date.now() }) } // L-06: 清理超过 50 条的旧记录 const all: RecentFile[] = await db.recentFiles.orderBy('lastOpened').reverse().toArray() if (all.length > 50) { const toDelete = all.slice(50) await db.recentFiles.bulkDelete(toDelete.map((f: RecentFile) => f.id!)) } } catch (error) { logError('添加最近文件失败', error) } }, async getAll(limit: number = 20): Promise { try { const files: RecentFile[] = await db.recentFiles .orderBy('lastOpened') .reverse() .limit(limit) .toArray() return files.map((f: RecentFile) => f.filePath) } catch (error) { logError('读取最近文件失败', error) return [] } }, async remove(filePath: string): Promise { try { await db.recentFiles.where('filePath').equals(filePath).delete() } catch (error) { logError('删除最近文件失败', error) } }, async clear(): Promise { try { await db.recentFiles.clear() } catch (error) { logError('清空最近文件失败', error) } } }