diff --git a/bun.lockb b/bun.lockb index ce5cb65..a4deaa6 100644 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/package.json b/package.json index d9a126b..98f5370 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "langchain": "^0.1.28", "lucide-react": "^0.350.0", "ml-distance": "^4.0.1", - "pdfjs-dist": "^4.0.379", + "pdfjs-dist": "4.0.379", "property-information": "^6.4.1", "pubsub-js": "^1.9.4", "react": "18.2.0", diff --git a/src/db/index.ts b/src/db/index.ts index bab011a..bc8b2f8 100644 --- a/src/db/index.ts +++ b/src/db/index.ts @@ -417,3 +417,30 @@ export const getUserId = async () => { } return id } + +export const exportChatHistory = async () => { + const db = new PageAssitDatabase() + const chatHistories = await db.getChatHistories() + const messages = await Promise.all( + chatHistories.map(async (history) => { + const messages = await db.getChatHistory(history.id) + return { history, messages } + }) + ) + return messages +} + +export const importChatHistory = async ( + data: { + history: HistoryInfo + messages: MessageHistory + }[] +) => { + const db = new PageAssitDatabase() + for (const { history, messages } of data) { + await db.addChatHistory(history) + for (const message of messages) { + await db.addMessage(message) + } + } +} diff --git a/src/db/knowledge.ts b/src/db/knowledge.ts index b853ead..9579536 100644 --- a/src/db/knowledge.ts +++ b/src/db/knowledge.ts @@ -190,3 +190,16 @@ export const deleteSource = async (id: string, source_id: string) => { await db.deleteSource(id, source_id) await deleteVectorByFileId(`vector:${id}`, source_id) } + +export const exportKnowledge = async () => { + const db = new PageAssistKnowledge() + const data = await db.getAll() + return data +} + +export const importKnowledge = async (data: Knowledge[]) => { + const db = new PageAssistKnowledge() + for (const d of data) { + await db.create(d) + } +} diff --git a/src/db/vector.ts b/src/db/vector.ts index e544c7f..2c2e281 100644 --- a/src/db/vector.ts +++ b/src/db/vector.ts @@ -100,6 +100,18 @@ export class PageAssistVectorDb { }) }) } + + getAll = async (): Promise => { + return new Promise((resolve, reject) => { + this.db.get(null, (result) => { + if (chrome.runtime.lastError) { + reject(chrome.runtime.lastError) + } else { + resolve(Object.values(result)) + } + }) + }) + } } export const insertVector = async ( @@ -127,3 +139,16 @@ export const deleteVectorByFileId = async ( const db = new PageAssistVectorDb() return db.deleteVectorByFileId(id, file_id) } + +export const exportVectors = async () => { + const db = new PageAssistVectorDb() + const data = await db.getAll() + return data +} + +export const importVectors = async (data: VectorData[]) => { + const db = new PageAssistVectorDb() + for (const d of data) { + await db.insertVector(d.id, d.vectors) + } +}