kaori 4 سال پیش
والد
کامیت
7a8634d8c1
2فایلهای تغییر یافته به همراه16 افزوده شده و 1 حذف شده
  1. 3 1
      packages/app/src/server/models/in-app-notification.ts
  2. 13 0
      packages/app/src/server/service/in-app-notification.ts

+ 3 - 1
packages/app/src/server/models/in-app-notification.ts

@@ -3,11 +3,13 @@ import {
 } from 'mongoose';
 import { subDays } from 'date-fns';
 import ActivityDefine from '../util/activityDefine';
+import { getOrCreateModel } from '../util/mongoose-utils';
 import loggerFactory from '../../utils/logger';
 import Crowi from '../crowi';
 import { ActivityDocument } from './activity';
 import User = require('./user');
 
+
 const logger = loggerFactory('growi:models:inAppNotification');
 
 const STATUS_UNREAD = 'UNREAD';
@@ -204,7 +206,7 @@ export default (crowi: Crowi) => {
     return STATUS_OPENED;
   };
 
-  const InAppNotification = model<InAppNotificationDocument, InAppNotificationModel>('InAppNotification', inAppNotificationSchema);
+  const InAppNotification = getOrCreateModel<InAppNotificationDocument, InAppNotificationModel>('InAppNotification', inAppNotificationSchema);
 
   return InAppNotification;
 };

+ 13 - 0
packages/app/src/server/service/in-app-notification.ts

@@ -1,4 +1,5 @@
 import Crowi from '../crowi';
+import InAppNotification from '~/server/models/in-app-notification';
 
 class InAppNotificationService {
 
@@ -29,6 +30,18 @@ class InAppNotificationService {
     });
   }
 
+  removeActivity = async function(activity) {
+    const { _id, target, action } = activity;
+    const query = { target, action };
+    const parameters = { $pull: { activities: _id } };
+
+    const result = await InAppNotification.updateMany(query, parameters);
+
+    await InAppNotification.removeEmpty();
+
+    return result;
+  };
+
 }
 
 module.exports = InAppNotificationService;