Просмотр исходного кода

Modify schema of BookmarkFolder

https://youtrack.weseek.co.jp/issue/GW-7910
- Update type of bookmarks in BookmarkFolderItems interface
- Set bookmarks as optional parameter
- Update bookmarks type in bookmarkFolderSchema
- Update population of bookamrks and page for bookmark folder listing
- update return value of bookmark folder list route
Mudana-Grune 3 лет назад
Родитель
Сommit
b55c2c7063

+ 1 - 1
packages/app/src/interfaces/bookmark-info.ts

@@ -29,5 +29,5 @@ export interface BookmarkFolderItems {
   name: string
   name: string
   parent: string
   parent: string
   children: this[]
   children: this[]
-  bookmarks: [Ref<BookmarkedPage>]
+  bookmarks: [BookmarkedPage]
 }
 }

+ 18 - 5
packages/app/src/server/models/bookmark-folder.ts

@@ -22,7 +22,7 @@ export interface BookmarkFolderDocument extends Document {
   name: string
   name: string
   owner: Types.ObjectId
   owner: Types.ObjectId
   parent?: [this]
   parent?: [this]
-  bookmarks: [Types.ObjectId]
+  bookmarks?: [Types.ObjectId]
 }
 }
 
 
 export interface BookmarkFolderModel extends Model<BookmarkFolderDocument>{
 export interface BookmarkFolderModel extends Model<BookmarkFolderDocument>{
@@ -38,9 +38,13 @@ const bookmarkFolderSchema = new Schema<BookmarkFolderDocument, BookmarkFolderMo
   name: { type: String },
   name: { type: String },
   owner: { type: Schema.Types.ObjectId, ref: 'User', index: true },
   owner: { type: Schema.Types.ObjectId, ref: 'User', index: true },
   parent: { type: Schema.Types.ObjectId, ref: 'BookmarkFolder', required: false },
   parent: { type: Schema.Types.ObjectId, ref: 'BookmarkFolder', required: false },
-  bookmarks: [{
-    type: Schema.Types.ObjectId, ref: 'Bookmark', default: [], required: false,
-  }],
+  bookmarks: {
+    type: [{
+      type: Schema.Types.ObjectId, ref: 'Bookmark', required: false,
+    }],
+    required: false,
+    default: [],
+  },
 }, {
 }, {
   toObject: { virtuals: true },
   toObject: { virtuals: true },
 });
 });
@@ -82,7 +86,16 @@ bookmarkFolderSchema.statics.findFolderAndChildren = async function(
 
 
   const parentFolder = await this.findById(parentId) as unknown as BookmarkFolderDocument;
   const parentFolder = await this.findById(parentId) as unknown as BookmarkFolderDocument;
   const bookmarkFolders = await this.find({ owner: userId, parent: parentFolder })
   const bookmarkFolders = await this.find({ owner: userId, parent: parentFolder })
-    .populate({ path: 'children' }).populate({ path: 'bookmarks' }).exec() as unknown as BookmarkFolderItems[];
+    .populate({ path: 'children' })
+    .populate({
+      path: 'bookmarks',
+      model: 'Bookmark',
+      populate: {
+        path: 'page',
+        model: 'Page',
+      },
+    }).exec() as unknown as BookmarkFolderItems[];
+  console.log(bookmarkFolders);
   return bookmarkFolders;
   return bookmarkFolders;
 };
 };
 
 

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

@@ -38,6 +38,7 @@ module.exports = (crowi) => {
 
 
     try {
     try {
       const bookmarkFolder = await BookmarkFolder.createByParameters(params);
       const bookmarkFolder = await BookmarkFolder.createByParameters(params);
+      console.log(bookmarkFolder);
       logger.debug('bookmark folder created', bookmarkFolder);
       logger.debug('bookmark folder created', bookmarkFolder);
       return res.apiv3({ bookmarkFolder });
       return res.apiv3({ bookmarkFolder });
     }
     }
@@ -55,13 +56,12 @@ module.exports = (crowi) => {
     const _parentId = parentId ?? null;
     const _parentId = parentId ?? null;
     try {
     try {
       const bookmarkFolders = await BookmarkFolder.findFolderAndChildren(req.user?._id, _parentId);
       const bookmarkFolders = await BookmarkFolder.findFolderAndChildren(req.user?._id, _parentId);
-      console.log(bookmarkFolders);
       const bookmarkFolderItems = bookmarkFolders.map(bookmarkFolder => ({
       const bookmarkFolderItems = bookmarkFolders.map(bookmarkFolder => ({
         _id: bookmarkFolder._id,
         _id: bookmarkFolder._id,
         name: bookmarkFolder.name,
         name: bookmarkFolder.name,
         parent: bookmarkFolder.parent,
         parent: bookmarkFolder.parent,
         children: bookmarkFolder.children,
         children: bookmarkFolder.children,
-        bookmarkedPages: bookmarkFolder.bookmarks,
+        bookmarks: bookmarkFolder.bookmarks,
       }));
       }));
       return res.apiv3({ bookmarkFolderItems });
       return res.apiv3({ bookmarkFolderItems });
     }
     }