فهرست منبع

Add error handler when parent folder doesn't exists

https://youtrack.weseek.co.jp/issue/GW-7833
- Add error handler when parent folder doesn't exists
- Update createByParameters method
Mudana-Grune 3 سال پیش
والد
کامیت
a18d624fd5
2فایلهای تغییر یافته به همراه17 افزوده شده و 19 حذف شده
  1. 10 15
      packages/app/src/server/models/bookmark-folder.ts
  2. 7 4
      packages/app/src/server/routes/apiv3/bookmark-folder.ts

+ 10 - 15
packages/app/src/server/models/bookmark-folder.ts

@@ -43,24 +43,19 @@ const bookmarkFolderSchema = new Schema<BookmarkFolderDocument, BookmarkFolderMo
 bookmarkFolderSchema.statics.createByParameters = async function(params: IBookmarkFolderDocument): Promise<BookmarkFolderDocument> {
 bookmarkFolderSchema.statics.createByParameters = async function(params: IBookmarkFolderDocument): Promise<BookmarkFolderDocument> {
   const { name, owner, parent } = params;
   const { name, owner, parent } = params;
   let bookmarkFolder;
   let bookmarkFolder;
-  try {
-    if (parent === null) {
-      bookmarkFolder = await this.create({ name, owner, parent:  null }) as unknown as BookmarkFolderDocument;
-    }
-    else {
-      const parentFolder = await this.findById(parent);
-      if (!parentFolder) {
-        throw new InvalidParentBookmarkFolder("Parent folder doesn't exists");
-      }
-      bookmarkFolder = await this.create({ name, owner, parent:  parentFolder?._id }) as unknown as BookmarkFolderDocument;
-    }
+
+  if (parent === null) {
+    bookmarkFolder = await this.create({ name, owner, parent:  null }) as unknown as BookmarkFolderDocument;
   }
   }
-  catch (err) {
-    if (err instanceof InvalidParentBookmarkFolder) {
-      throw new InvalidParentBookmarkFolder(err);
+  else {
+    const parentFolder = await this.findById(parent);
+    if (!parentFolder) {
+      throw new InvalidParentBookmarkFolder("Parent folder doesn't exists");
     }
     }
-    return err;
+    bookmarkFolder = await this.create({ name, owner, parent:  parentFolder?._id }) as unknown as BookmarkFolderDocument;
   }
   }
+
+
   return bookmarkFolder;
   return bookmarkFolder;
 };
 };
 
 

+ 7 - 4
packages/app/src/server/routes/apiv3/bookmark-folder.ts

@@ -1,9 +1,10 @@
-import { body, param } from 'express-validator';
+import { ErrorV3 } from '@growi/core';
+import { body } from 'express-validator';
 
 
 import { apiV3FormValidator } from '~/server/middlewares/apiv3-form-validator';
 import { apiV3FormValidator } from '~/server/middlewares/apiv3-form-validator';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 
-import BookmarkFolder from '../../models/bookmark-folder';
+import BookmarkFolder, { InvalidParentBookmarkFolder } from '../../models/bookmark-folder';
 
 
 const logger = loggerFactory('growi:routes:apiv3:bookmark-folder');
 const logger = loggerFactory('growi:routes:apiv3:bookmark-folder');
 
 
@@ -31,12 +32,14 @@ module.exports = (crowi) => {
     };
     };
 
 
     try {
     try {
-      const bookmarkFolder = BookmarkFolder.createByParameters(params);
+      const bookmarkFolder = await BookmarkFolder.createByParameters(params);
       logger.debug('bookmark folder created', bookmarkFolder);
       logger.debug('bookmark folder created', bookmarkFolder);
       return res.apiv3({ bookmarkFolder });
       return res.apiv3({ bookmarkFolder });
     }
     }
     catch (err) {
     catch (err) {
-      logger.error('create bookmark folder failed', err);
+      if (err instanceof InvalidParentBookmarkFolder) {
+        return res.apiv3Err(new ErrorV3(err.message, 'failed_to_create_bookmark_folder'));
+      }
       return res.apiv3Err(err, 500);
       return res.apiv3Err(err, 500);
     }
     }
   });
   });