فهرست منبع

Merge pull request #6059 from weseek/imprv/activity-service

imprv: ActivityService
Shun Miyazawa 3 سال پیش
والد
کامیت
10c4ad90a3

+ 2 - 1
packages/app/src/server/middlewares/add-activity.ts

@@ -2,6 +2,7 @@ import { NextFunction, Request, Response } from 'express';
 
 import { SupportedAction } from '~/interfaces/activity';
 import { IUserHasId } from '~/interfaces/user';
+import Activity from '~/server/models/activity';
 import loggerFactory from '~/utils/logger';
 
 
@@ -23,7 +24,7 @@ export const generateAddActivityMiddleware = crowi => async(req: AuthorizedReque
   };
 
   try {
-    const activity = await crowi.activityService.createByParameters(parameter);
+    const activity = await Activity.createByParameters(parameter);
     res.locals.activity = activity;
   }
   catch (err) {

+ 14 - 1
packages/app/src/server/models/activity.ts

@@ -5,7 +5,7 @@ import {
 import mongoosePaginate from 'mongoose-paginate-v2';
 
 import {
-  ISnapshot, AllSupportedAction, SupportedActionType,
+  IActivity, ISnapshot, AllSupportedAction, SupportedActionType,
   AllSupportedTargetModel, SupportedTargetModelType,
   AllSupportedEventModel, SupportedEventModelType,
 } from '~/interfaces/activity';
@@ -14,6 +14,7 @@ import loggerFactory from '../../utils/logger';
 
 import Subscription from './subscription';
 
+
 const logger = loggerFactory('growi:models:activity');
 
 export interface ActivityDocument extends Document {
@@ -112,6 +113,18 @@ activitySchema.methods.getNotificationTargetUsers = async function() {
   return activeNotificationUsers;
 };
 
+activitySchema.statics.createByParameters = async function(parameters): Promise<IActivity> {
+  const activity = await this.create(parameters) as unknown as IActivity;
+
+  return activity;
+};
+
+activitySchema.statics.updateByParameters = async function(activityId: string, parameters): Promise<IActivity> {
+  const activity = await this.findOneAndUpdate({ _id: activityId }, parameters, { new: true }) as unknown as IActivity;
+
+  return activity;
+};
+
 activitySchema.statics.getPaginatedActivity = async function(limit: number, offset: number, query) {
   const paginateResult = await this.paginate(
     query,

+ 2 - 34
packages/app/src/server/service/activity.ts

@@ -1,4 +1,3 @@
-import { getModelSafely } from '@growi/core';
 import mongoose from 'mongoose';
 
 import { IActivity } from '~/interfaces/activity';
@@ -11,8 +10,6 @@ import Crowi from '../crowi';
 
 const logger = loggerFactory('growi:service:ActivityService');
 
-type UpdateActivityParameterType = Omit<IActivity, 'user' | 'createdAt' | 'ip' | 'endpoint'>
-
 class ActivityService {
 
   crowi!: Crowi;
@@ -23,18 +20,14 @@ class ActivityService {
     this.crowi = crowi;
     this.activityEvent = crowi.event('activity');
 
-    this.updateByParameters = this.updateByParameters.bind(this);
-
     this.initActivityEventListeners();
   }
 
   initActivityEventListeners(): void {
-    this.activityEvent.on('update', async(activityId: string, parameters: UpdateActivityParameterType, target?: IPage) => {
-
-      // update activity
+    this.activityEvent.on('update', async(activityId: string, parameters, target?: IPage) => {
       let activity: IActivity;
       try {
-        activity = await this.updateByParameters(activityId, parameters);
+        activity = await Activity.updateByParameters(activityId, parameters);
       }
       catch (err) {
         logger.error('Update activity failed', err);
@@ -74,31 +67,6 @@ class ActivityService {
     }
   };
 
-
-  /**
-     * @param {object} parameters
-     * @return {Promise}
-     */
-  createByParameters = function(parameters) {
-    const Activity = getModelSafely('Activity') || require('../models/activity')(this.crowi);
-
-    return Activity.create(parameters);
-  };
-
-  updateByParameters = async function(activityId: string, parameters: UpdateActivityParameterType): Promise<IActivity> {
-    const activity = await Activity.findOneAndUpdate({ _id: activityId }, parameters, { new: true }) as unknown as IActivity;
-
-    return activity;
-  };
-
-  /**
-   * @param {User} user
-   * @return {Promise}
-   */
-  findByUser = function(user) {
-    return this.find({ user }).sort({ createdAt: -1 }).exec();
-  };
-
 }
 
 module.exports = ActivityService;