feat: Add export/import functions for chat history, promt and knowledge
This commit is contained in:
66
src/libs/export-import.ts
Normal file
66
src/libs/export-import.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
import {
|
||||
exportChatHistory,
|
||||
exportPrompts,
|
||||
importChatHistory,
|
||||
importPrompts
|
||||
} from "@/db"
|
||||
import { exportKnowledge, importKnowledge } from "@/db/knowledge"
|
||||
import { exportVectors, importVectors } from "@/db/vector"
|
||||
import { message } from "antd"
|
||||
|
||||
export const exportPageAssistData = async () => {
|
||||
const knowledge = await exportKnowledge()
|
||||
const chat = await exportChatHistory()
|
||||
const vector = await exportVectors()
|
||||
const prompts = await exportPrompts()
|
||||
|
||||
const data = {
|
||||
knowledge,
|
||||
chat,
|
||||
vector,
|
||||
prompts
|
||||
}
|
||||
|
||||
const dataStr = JSON.stringify(data)
|
||||
|
||||
const blob = new Blob([dataStr], { type: "application/json" })
|
||||
const url = URL.createObjectURL(blob)
|
||||
|
||||
const a = document.createElement("a")
|
||||
a.href = url
|
||||
a.download = `page-assist-${new Date().toISOString()}.json`
|
||||
a.click()
|
||||
URL.revokeObjectURL(url)
|
||||
}
|
||||
|
||||
export const importPageAssistData = async (file: File) => {
|
||||
const reader = new FileReader()
|
||||
reader.onload = async () => {
|
||||
try {
|
||||
const data = JSON.parse(reader.result as string)
|
||||
|
||||
if (data?.knowledge) {
|
||||
await importKnowledge(data.knowledge)
|
||||
}
|
||||
|
||||
if (data?.chat) {
|
||||
await importChatHistory(data.chat)
|
||||
}
|
||||
|
||||
if (data?.vector) {
|
||||
await importVectors(data.vector)
|
||||
}
|
||||
|
||||
if (data?.prompts) {
|
||||
await importPrompts(data.prompts)
|
||||
}
|
||||
|
||||
message.success("Data imported successfully")
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
message.error("Failed to import data")
|
||||
}
|
||||
}
|
||||
|
||||
reader.readAsText(file)
|
||||
}
|
||||
Reference in New Issue
Block a user