page-assist/src/libs/export-import.ts

67 lines
1.5 KiB
TypeScript

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)
}