Update dependencies and fix import paths
This commit is contained in:
131
src/db/vector.ts
Normal file
131
src/db/vector.ts
Normal file
@@ -0,0 +1,131 @@
|
||||
interface PageAssistVector {
|
||||
file_id: string
|
||||
content: string
|
||||
embedding: number[]
|
||||
metadata: Record<string, any>
|
||||
}
|
||||
|
||||
export type VectorData = {
|
||||
id: string
|
||||
vectors: PageAssistVector[]
|
||||
}
|
||||
|
||||
export class PageAssistVectorDb {
|
||||
db: chrome.storage.StorageArea
|
||||
|
||||
constructor() {
|
||||
this.db = chrome.storage.local
|
||||
}
|
||||
|
||||
insertVector = async (
|
||||
id: string,
|
||||
vector: PageAssistVector[]
|
||||
): Promise<void> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.db.get(id, (result) => {
|
||||
if (chrome.runtime.lastError) {
|
||||
reject(chrome.runtime.lastError)
|
||||
} else {
|
||||
const data = result[id] as VectorData
|
||||
if (!data) {
|
||||
console.log("Creating new vector")
|
||||
this.db.set({ [id]: { id, vectors: [vector] } }, () => {
|
||||
if (chrome.runtime.lastError) {
|
||||
reject(chrome.runtime.lastError)
|
||||
} else {
|
||||
resolve()
|
||||
}
|
||||
})
|
||||
} else {
|
||||
console.log("Concatenating vectors")
|
||||
this.db.set(
|
||||
{
|
||||
[id]: {
|
||||
...data,
|
||||
vectors: data.vectors.concat(vector)
|
||||
}
|
||||
},
|
||||
() => {
|
||||
if (chrome.runtime.lastError) {
|
||||
reject(chrome.runtime.lastError)
|
||||
} else {
|
||||
resolve()
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
deleteVector = async (id: string): Promise<void> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.db.remove(id, () => {
|
||||
if (chrome.runtime.lastError) {
|
||||
reject(chrome.runtime.lastError)
|
||||
} else {
|
||||
resolve()
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
deleteVectorByFileId = async (id: string, file_id: string): Promise<void> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.db.get(id, (result) => {
|
||||
if (chrome.runtime.lastError) {
|
||||
reject(chrome.runtime.lastError)
|
||||
} else {
|
||||
const data = result[id] as VectorData
|
||||
data.vectors = data.vectors.filter((v) => v.file_id !== file_id)
|
||||
this.db.set({ [id]: data }, () => {
|
||||
if (chrome.runtime.lastError) {
|
||||
reject(chrome.runtime.lastError)
|
||||
} else {
|
||||
resolve()
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
getVector = async (id: string): Promise<VectorData> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.db.get(id, (result) => {
|
||||
if (chrome.runtime.lastError) {
|
||||
reject(chrome.runtime.lastError)
|
||||
} else {
|
||||
resolve(result[id] as VectorData)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
export const insertVector = async (
|
||||
id: string,
|
||||
vector: PageAssistVector[]
|
||||
): Promise<void> => {
|
||||
const db = new PageAssistVectorDb()
|
||||
return db.insertVector(id, vector)
|
||||
}
|
||||
|
||||
export const getVector = async (id: string): Promise<VectorData> => {
|
||||
const db = new PageAssistVectorDb()
|
||||
return db.getVector(id)
|
||||
}
|
||||
|
||||
export const deleteVector = async (id: string): Promise<void> => {
|
||||
const db = new PageAssistVectorDb()
|
||||
return db.deleteVector(id)
|
||||
}
|
||||
|
||||
export const deleteVectorByFileId = async (
|
||||
id: string,
|
||||
file_id: string
|
||||
): Promise<void> => {
|
||||
const db = new PageAssistVectorDb()
|
||||
return db.deleteVectorByFileId(id, file_id)
|
||||
}
|
||||
Reference in New Issue
Block a user