zahmis před 4 roky
rodič
revize
c47afbaad4

+ 4 - 1
packages/app/src/server/events/page.js

@@ -18,5 +18,8 @@ PageEvent.prototype.onUpdate = function(page, user) {
 PageEvent.prototype.onCreateMany = function(pages, user) {
   debug('onCreateMany event fired');
 };
-
+PageEvent.prototype.onAddSeenUsers = function(pages, user) {
+  console.log(22);
+  debug('onAddSeenUsers event fired');
+};
 module.exports = PageEvent;

+ 17 - 0
packages/app/src/server/models/page.js

@@ -288,6 +288,7 @@ module.exports = function(crowi) {
     pageEvent.on('create', pageEvent.onCreate);
     pageEvent.on('update', pageEvent.onUpdate);
     pageEvent.on('createMany', pageEvent.onCreateMany);
+    pageEvent.on('addSeenUsers', pageEvent.onAddSeenUsers);
   }
 
   function validateCrowi() {
@@ -417,6 +418,22 @@ module.exports = function(crowi) {
     return saved;
   };
 
+  // pageSchema.statics.getPageIdToSeenUsersCount = async function(pageIds) {
+  //   console.log(pageIds, 423);
+  //   const results = await this.aggregate()
+  //     .match({ _id: { $in: pageIds } });
+
+
+  //   console.log(results, 425, 'getPageIdTO');
+  //   const idToCountMap = {};
+  //   results.forEach((result) => {
+  //     idToCountMap[result.id] = result.count;
+  //   });
+
+  //   return idToCountMap;
+
+  // };
+
   pageSchema.methods.updateSlackChannels = function(slackChannels) {
     this.slackChannels = slackChannels;
 

+ 4 - 0
packages/app/src/server/routes/page.js

@@ -361,6 +361,10 @@ module.exports = function(crowi, app) {
     // add user to seen users
     if (req.user != null) {
       page = await page.seen(req.user);
+      console.log(page, 364);
+      const pageEvent = crowi.event('page');
+      pageEvent.on('addSeenUsers', pageEvent.onAddSeenUsers);
+      console.log(367);
     }
 
     // populate

+ 1 - 0
packages/app/src/server/service/page.js

@@ -25,6 +25,7 @@ class PageService {
     this.pageEvent.on('create', this.pageEvent.onCreate);
     this.pageEvent.on('update', this.pageEvent.onUpdate);
     this.pageEvent.on('createMany', this.pageEvent.onCreateMany);
+    this.pageEvent.on('addSeenUsers', this.pageEvent.onAddSeenUsers);
   }
 
   /**

+ 16 - 9
packages/app/src/server/service/search-delegator/elasticsearch.js

@@ -418,6 +418,8 @@ class ElasticsearchDelegator {
       async transform(chunk, encoding, callback) {
         const pageIds = chunk.map(doc => doc._id);
 
+        console.log(pageIds, 420, 'updateOrInsertPages');
+
         const idToCountMap = await Bookmark.getPageIdToCountMap(pageIds);
         const idsHavingCount = Object.keys(idToCountMap);
 
@@ -460,17 +462,17 @@ class ElasticsearchDelegator {
       async transform(chunk, encoding, callback) {
         const pageIds = chunk.map(doc => doc._id);
 
-        const idToCountSeenUsersMap = await Page.getPageIdToSeenUsersCount(pageIds);
-        console.log(idToCountSeenUsersMap, 464);
+        const hoge = await Page.find({ _id: { $in: pageIds } });
+        console.log(hoge, 464);
 
-        const idsHavingCount = Object.keys(idToCountSeenUsersMap);
+        // const idsHavingCount = Object.keys(idToCountSeenUsersMap);
 
-        chunk
-          .filter(doc => idsHavingCount.includes(doc._id.toString()))
-          .forEach((doc) => {
-            doc.seenUsers = idToCountSeenUsersMap[doc.id.toString()];
-          });
-        this.push(chunk);
+        // chunk
+        //   .filter(doc => idsHavingCount.includes(doc._id.toString()))
+        //   .forEach((doc) => {
+        //     doc.seenUsers = idToCountSeenUsersMap[doc.id.toString()];
+        //   });
+        // this.push(chunk);
         callback();
       },
     });
@@ -994,7 +996,12 @@ class ElasticsearchDelegator {
     };
   }
 
+  // async syncPageSeen() {
+
+  // }
+
   async syncPageUpdated(page, user) {
+    console.log(page, 1004);
     logger.debug('SearchClient.syncPageUpdated', page.path);
 
     // delete if page should not indexed

+ 1 - 0
packages/app/src/server/service/search.js

@@ -68,6 +68,7 @@ class SearchService {
     pageEvent.on('delete', this.delegator.syncPageDeleted.bind(this.delegator));
     pageEvent.on('updateMany', this.delegator.syncPagesUpdated.bind(this.delegator));
     pageEvent.on('syncDescendants', this.delegator.syncDescendantsPagesUpdated.bind(this.delegator));
+    pageEvent.on('addSeenUsers', this.delegator.syncPageUpdated.bind(this.delegator));
 
     const bookmarkEvent = this.crowi.event('bookmark');
     bookmarkEvent.on('create', this.delegator.syncBookmarkChanged.bind(this.delegator));