Shun Miyazawa 1 год назад
Родитель
Сommit
81032111e7
1 измененных файлов с 40 добавлено и 0 удалено
  1. 40 0
      apps/app/src/features/openai/server/models/vector-store.ts

+ 40 - 0
apps/app/src/features/openai/server/models/vector-store.ts

@@ -0,0 +1,40 @@
+import { type Model, type Document, Schema } from 'mongoose';
+
+import { getOrCreateModel } from '~/server/util/mongoose-utils';
+
+
+export const VectorStoreScopeType = {
+  PUBLIC: 'public',
+  GROUP: 'group',
+} as const;
+
+export type VectorStoreScopeType = typeof VectorStoreScopeType[keyof typeof VectorStoreScopeType];
+
+const VectorStoreScopeTypes = Object.values(VectorStoreScopeType);
+
+interface VectorStore {
+  vectorStoreId: string
+  scorpeType: VectorStoreScopeType
+}
+
+interface VectorStoreDocument extends VectorStore, Document {}
+
+interface VectorStoreModel extends Model<VectorStore> {
+  getPublicVectorStore(): Promise<VectorStoreDocument | null>;
+}
+
+const schema = new Schema<VectorStoreDocument, VectorStoreModel>({
+  vectorStoreId: {
+    type: String,
+    required: true,
+    unique: true,
+  },
+  scorpeType: {
+    enum: VectorStoreScopeTypes,
+    default: VectorStoreScopeType.PUBLIC,
+    type: String,
+    required: true,
+  },
+});
+
+export default getOrCreateModel<VectorStoreDocument, VectorStoreModel>('VectorStore', schema);