|
|
@@ -7,12 +7,14 @@ import { getOrCreateModel } from '~/server/util/mongoose-utils';
|
|
|
export interface VectorStoreFileRelation {
|
|
|
pageId: mongoose.Types.ObjectId;
|
|
|
fileIds: string[];
|
|
|
+ isAttachedToVectorStore: boolean;
|
|
|
}
|
|
|
|
|
|
interface VectorStoreFileRelationDocument extends VectorStoreFileRelation, Document {}
|
|
|
|
|
|
interface VectorStoreFileRelationModel extends Model<VectorStoreFileRelation> {
|
|
|
upsertVectorStoreFileRelations(vectorStoreFileRelations: VectorStoreFileRelation[]): Promise<void>;
|
|
|
+ markAsAttachedToVectorStore(pageIds: Types.ObjectId[]): Promise<void>;
|
|
|
}
|
|
|
|
|
|
export const prepareVectorStoreFileRelations = (
|
|
|
@@ -30,6 +32,7 @@ export const prepareVectorStoreFileRelations = (
|
|
|
relationsMap.set(pageIdStr, {
|
|
|
pageId,
|
|
|
fileIds: [fileId],
|
|
|
+ isAttachedToVectorStore: false,
|
|
|
});
|
|
|
}
|
|
|
|
|
|
@@ -47,6 +50,11 @@ const schema = new Schema<VectorStoreFileRelationDocument, VectorStoreFileRelati
|
|
|
type: String,
|
|
|
required: true,
|
|
|
}],
|
|
|
+ isAttachedToVectorStore: {
|
|
|
+ type: Boolean,
|
|
|
+ default: false, // File is not attached to the Vector Store at the time it is uploaded
|
|
|
+ required: true,
|
|
|
+ },
|
|
|
});
|
|
|
|
|
|
schema.statics.upsertVectorStoreFileRelations = async function(vectorStoreFileRelations: VectorStoreFileRelation[]): Promise<void> {
|
|
|
@@ -63,4 +71,12 @@ schema.statics.upsertVectorStoreFileRelations = async function(vectorStoreFileRe
|
|
|
);
|
|
|
};
|
|
|
|
|
|
+// Used when attached to VectorStore
|
|
|
+schema.statics.markAsAttachedToVectorStore = async function(pageIds: Types.ObjectId[]): Promise<void> {
|
|
|
+ await this.updateMany(
|
|
|
+ { pageId: { $in: pageIds } },
|
|
|
+ { $set: { isAttachedToVectorStore: true } },
|
|
|
+ );
|
|
|
+};
|
|
|
+
|
|
|
export default getOrCreateModel<VectorStoreFileRelationDocument, VectorStoreFileRelationModel>('VectorStoreFileRelation', schema);
|