Przeglądaj źródła

feat: implement mongoose-paginate-v2

https://youtrack.weseek.co.jp/issue/GW-7758
- Add page in url query options
- Disable previous custom pagination builder
I Komang Mudana 4 lat temu
rodzic
commit
e101e595ff

+ 11 - 7
packages/app/src/server/models/obsolete-page.js

@@ -506,7 +506,7 @@ export const getPageSchema = (crowi) => {
     validateCrowi();
 
     const User = crowi.model('User');
-
+    const Page = crowi.model('Page');
     const opt = Object.assign({ sort: 'updatedAt', desc: -1 }, option);
     const sortOpt = {};
     sortOpt[opt.sort] = opt.desc;
@@ -523,14 +523,18 @@ export const getPageSchema = (crowi) => {
     const totalCount = await builder.query.exec('count');
 
     // find
-    builder.addConditionToPagenate(opt.offset, opt.limit, sortOpt);
-    builder.populateDataToList(User.USER_FIELDS_EXCEPT_CONFIDENTIAL);
-    const pages = await builder.query.lean().clone().exec('find');
+    // builder.addConditionToPagenate(opt.offset, opt.limit, sortOpt);
 
-    const result = {
-      pages, totalCount, offset: opt.offset, limit: opt.limit,
+
+    const paginationOptions = {
+      lean: true, limit: opt.limit, offset: opt.offset, page: opt.page,
     };
-    return result;
+    builder.populateDataToList(User.USER_FIELDS_EXCEPT_CONFIDENTIAL);
+    const pages = await Page.paginate(builder, paginationOptions);
+    const results = {
+      pages: pages.docs, totalCount: pages.totalDocs, offset: opt.offset, limit: opt.limit,
+    };
+    return results;
   }
 
   /**

+ 2 - 0
packages/app/src/server/routes/apiv3/pages.js

@@ -366,6 +366,7 @@ module.exports = (crowi) => {
   router.get('/recent', accessTokenParser, loginRequired, async(req, res) => {
     const limit = 20;
     const offset = parseInt(req.query.offset) || 0;
+    const page = parseInt(req.query.page) || 1;
 
     const queryOptions = {
       offset,
@@ -374,6 +375,7 @@ module.exports = (crowi) => {
       isRegExpEscapedFromPath: true,
       sort: 'updatedAt',
       desc: -1,
+      page,
     };
 
     try {