Browse Source

make page-tag-relation document on page.js

yusuketk 7 years ago
parent
commit
798060bac8
3 changed files with 31 additions and 29 deletions
  1. 2 2
      src/server/models/page-tag-relation.js
  2. 19 21
      src/server/models/tag.js
  3. 10 6
      src/server/routes/page.js

+ 2 - 2
src/server/models/page-tag-relation.js

@@ -272,8 +272,8 @@ class PageTagRelation {
    */
   static createRelation(page, tag) {
     return this.create({
-      relatedPage: page.id,
-      relatedTag: tag.id
+      relatedPage: page._id,
+      relatedTag: tag._id
     });
   }
 

+ 19 - 21
src/server/models/tag.js

@@ -32,12 +32,17 @@ module.exports = function (crowi) {
     // },
   });
 
-  tagSchema.statics.settingTags = function(page, tag) {
-    const PageTagRelation = crowi.model('PageTagRelation');
-    return this.create({name: tag}, function(err, createdTag) {
-      // console.log(createdTag);
-      // Relation を作成
-      PageTagRelation.createRelation(page, createdTag);
+  /**
+   * create a tag (Promise wrapper)
+   */
+  tagSchema.statics.createTag = function(tag) {
+    return new Promise((resolve, reject) => {
+      this.create({name: tag}, function(err, createdTag) {
+        if (err) {
+          reject(err);
+        }
+        resolve(createdTag);
+      });
     });
   };
 
@@ -111,21 +116,14 @@ module.exports = function (crowi) {
 //     });
 //   };
 
-//   commentSchema.statics.removeCommentsByPageId = function (pageId) {
-//     var Comment = this;
-
-//     return new Promise(function (resolve, reject) {
-//       Comment.remove({
-//         page: pageId
-//       }, function (err, done) {
-//         if (err) {
-//           return reject(err);
-//         }
-
-//         resolve(done);
-//       });
-//     });
-//   };
+  tagSchema.statics.removeTagById = function(tagId) {
+    const Tag = this;
+    Tag.remove({_id: tagId}, function(err, done) {
+      if (err) {
+        throw new Error(err);
+      }
+    });
+  };
 
 //   /**
 //    * post save hook

+ 10 - 6
src/server/routes/page.js

@@ -7,6 +7,7 @@ module.exports = function(crowi, app) {
     , Page = crowi.model('Page')
     , User = crowi.model('User')
     , Tag = crowi.model('Tag')
+    , PageTagRelation = crowi.model('PageTagRelation')
     , Config   = crowi.model('Config')
     , config   = crowi.getConfig()
     , Bookmark = crowi.model('Bookmark')
@@ -106,8 +107,13 @@ module.exports = function(crowi, app) {
     }
   }
 
-  function updateTags(page, user, pageTags, updateOrCreate, previousRevision) {
-    Tag.settingTags(page, pageTags);
+  async function updateTags(page, user, pageTags, updateOrCreate, previousRevision) {
+    // if (pageTags == null) {
+    //   Tag.removeTagById(tag.id);
+    // }
+    const createdTag = await Tag.createTag(pageTags);
+    // Relation を作成
+    PageTagRelation.createRelation(page, createdTag);
   }
 
   function addRendarVarsForPage(renderVars, page) {
@@ -660,10 +666,8 @@ module.exports = function(crowi, app) {
       await notifyToSlackByUser(page, req.user, slackChannels, 'update', previousRevision);
     }
 
-    // set page tag
-    if (pageTags != null) {
-      await updateTags(page, req.user, pageTags, 'update', previousRevision);
-    }
+    // update page tag
+    await updateTags(page, req.user, pageTags, 'update', previousRevision);
   };
 
   /**