Преглед на файлове

Add error handling for uninitialized OpenAI service in AI assistant routes

Shun Miyazawa преди 1 година
родител
ревизия
50206db7f2

+ 6 - 2
apps/app/src/features/openai/server/routes/ai-assistant.ts

@@ -30,10 +30,14 @@ export const createAiAssistantFactory: CreateAssistantFactory = (crowi) => {
   return [
     accessTokenParser, loginRequiredStrictly, certifyAiService, upsertAiAssistantValidator, apiV3FormValidator,
     async(req: Req, res: ApiV3Response) => {
+      const openaiService = getOpenaiService();
+      if (openaiService == null) {
+        return res.apiv3Err(new ErrorV3('GROWI AI is not enabled'), 501);
+      }
+
       try {
         const aiAssistantData = { ...req.body, owner: req.user._id };
-        const openaiService = getOpenaiService();
-        const aiAssistant = await openaiService?.createAiAssistant(aiAssistantData);
+        const aiAssistant = await openaiService.createAiAssistant(aiAssistantData);
 
         return res.apiv3({ aiAssistant });
       }

+ 6 - 2
apps/app/src/features/openai/server/routes/ai-assistants.ts

@@ -27,9 +27,13 @@ export const getAiAssistantsFactory: GetAiAssistantsFactory = (crowi) => {
   return [
     accessTokenParser, loginRequiredStrictly, certifyAiService,
     async(req: Req, res: ApiV3Response) => {
+      const openaiService = getOpenaiService();
+      if (openaiService == null) {
+        return res.apiv3Err(new ErrorV3('GROWI AI is not enabled'), 501);
+      }
+
       try {
-        const openaiService = getOpenaiService();
-        const accessibleAiAssistants = await openaiService?.getAccessibleAiAssistants(req.user);
+        const accessibleAiAssistants = await openaiService.getAccessibleAiAssistants(req.user);
 
         return res.apiv3({ accessibleAiAssistants });
       }

+ 6 - 2
apps/app/src/features/openai/server/routes/delete-ai-assistant.ts

@@ -40,9 +40,13 @@ export const deleteAiAssistantsFactory: DeleteAiAssistantsFactory = (crowi) => {
       const { id } = req.params;
       const { user } = req;
 
+      const openaiService = getOpenaiService();
+      if (openaiService == null) {
+        return res.apiv3Err(new ErrorV3('GROWI AI is not enabled'), 501);
+      }
+
       try {
-        const openaiService = getOpenaiService();
-        const deletedAiAssistant = await openaiService?.deleteAiAssistant(user._id, id);
+        const deletedAiAssistant = await openaiService.deleteAiAssistant(user._id, id);
         return res.apiv3({ deletedAiAssistant });
       }
       catch (err) {

+ 5 - 1
apps/app/src/features/openai/server/routes/rebuild-vector-store.ts

@@ -28,8 +28,12 @@ export const rebuildVectorStoreHandlersFactory: RebuildVectorStoreFactory = (cro
     accessTokenParser, loginRequiredStrictly, adminRequired, certifyAiService, validator, apiV3FormValidator,
     async(req: Request, res: ApiV3Response) => {
 
+      const openaiService = getOpenaiService();
+      if (openaiService == null) {
+        return res.apiv3Err(new ErrorV3('GROWI AI is not enabled'), 501);
+      }
+
       try {
-        const openaiService = getOpenaiService();
         // await openaiService?.rebuildVectorStoreAll();
         return res.apiv3({});
 

+ 7 - 1
apps/app/src/features/openai/server/routes/thread.ts

@@ -1,4 +1,5 @@
 import type { IUserHasId } from '@growi/core/dist/interfaces';
+import { ErrorV3 } from '@growi/core/dist/models';
 import type { Request, RequestHandler } from 'express';
 import type { ValidationChain } from 'express-validator';
 import { body } from 'express-validator';
@@ -30,8 +31,13 @@ export const createThreadHandlersFactory: CreateThreadFactory = (crowi) => {
   return [
     accessTokenParser, loginRequiredStrictly, certifyAiService, validator, apiV3FormValidator,
     async(req: CreateThreadReq, res: ApiV3Response) => {
+
+      const openaiService = getOpenaiService();
+      if (openaiService == null) {
+        return res.apiv3Err(new ErrorV3('GROWI AI is not enabled'), 501);
+      }
+
       try {
-        const openaiService = getOpenaiService();
         const filterdThreadId = req.body.threadId != null ? filterXSS(req.body.threadId) : undefined;
         // const vectorStore = await openaiService?.getOrCreateVectorStoreForPublicScope();
         // const thread = await openaiService?.getOrCreateThread(req.user._id, vectorStore?.vectorStoreId, filterdThreadId);

+ 6 - 2
apps/app/src/features/openai/server/routes/update-ai-assistant.ts

@@ -43,10 +43,14 @@ export const updateAiAssistantsFactory: UpdateAiAssistantsFactory = (crowi) => {
       const { id } = req.params;
       const { user } = req;
 
+      const openaiService = getOpenaiService();
+      if (openaiService == null) {
+        return res.apiv3Err(new ErrorV3('GROWI AI is not enabled'), 501);
+      }
+
       try {
-        const openaiService = getOpenaiService();
         const aiAssistantData = { ...req.body, owner: user._id };
-        const updatedAiAssistant = await openaiService?.updateAiAssistant(id, aiAssistantData);
+        const updatedAiAssistant = await openaiService.updateAiAssistant(id, aiAssistantData);
 
         return res.apiv3({ updatedAiAssistant });
       }