|
@@ -2,6 +2,7 @@ import { getOrCreateModel, getModelSafely } from '@growi/core';
|
|
|
import {
|
|
import {
|
|
|
Types, Document, Model, Schema,
|
|
Types, Document, Model, Schema,
|
|
|
} from 'mongoose';
|
|
} from 'mongoose';
|
|
|
|
|
+import mongoosePaginate from 'mongoose-paginate-v2';
|
|
|
|
|
|
|
|
import { AllSupportedTargetModelType, AllSupportedEventModelType, AllSupportedActionType } from '~/interfaces/activity';
|
|
import { AllSupportedTargetModelType, AllSupportedEventModelType, AllSupportedActionType } from '~/interfaces/activity';
|
|
|
|
|
|
|
@@ -25,6 +26,7 @@ export interface ActivityDocument extends Document {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
export interface ActivityModel extends Model<ActivityDocument> {
|
|
export interface ActivityModel extends Model<ActivityDocument> {
|
|
|
|
|
+ [x:string]: any
|
|
|
getActionUsersFromActivities(activities: ActivityDocument[]): any[]
|
|
getActionUsersFromActivities(activities: ActivityDocument[]): any[]
|
|
|
}
|
|
}
|
|
|
// TODO: add revision id
|
|
// TODO: add revision id
|
|
@@ -65,6 +67,7 @@ activitySchema.index({ target: 1, action: 1 });
|
|
|
activitySchema.index({
|
|
activitySchema.index({
|
|
|
user: 1, target: 1, action: 1, createdAt: 1,
|
|
user: 1, target: 1, action: 1, createdAt: 1,
|
|
|
}, { unique: true });
|
|
}, { unique: true });
|
|
|
|
|
+activitySchema.plugin(mongoosePaginate);
|
|
|
|
|
|
|
|
|
|
|
|
|
activitySchema.methods.getNotificationTargetUsers = async function() {
|
|
activitySchema.methods.getNotificationTargetUsers = async function() {
|
|
@@ -101,4 +104,16 @@ activitySchema.post('save', async(savedActivity: ActivityDocument) => {
|
|
|
activityEvent.emit('create', targetUsers, savedActivity);
|
|
activityEvent.emit('create', targetUsers, savedActivity);
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
+activitySchema.statics.getPaginatedActivity = async function(limit: number, offset: number) {
|
|
|
|
|
+ const paginateResult = await this.paginate(
|
|
|
|
|
+ {},
|
|
|
|
|
+ {
|
|
|
|
|
+ limit,
|
|
|
|
|
+ offset,
|
|
|
|
|
+ sort: { createdAt: -1 },
|
|
|
|
|
+ },
|
|
|
|
|
+ );
|
|
|
|
|
+ return paginateResult;
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
export default getOrCreateModel<ActivityDocument, ActivityModel>('Activity', activitySchema);
|
|
export default getOrCreateModel<ActivityDocument, ActivityModel>('Activity', activitySchema);
|